GPUDevice: createBuffer() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createBuffer()
Methode der
GPUDevice
-Schnittstelle erstellt einen GPUBuffer
, in dem rohe Daten für die Verwendung in GPU-Operationen gespeichert werden.
Syntax
createBuffer(descriptor)
Parameter
descriptor
-
Ein Objekt, das die folgenden Eigenschaften enthält:
label
Optional-
Ein String, der ein Etikett bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in
GPUError
-Meldungen oder Konsolenwarnungen. mappedAtCreation
Optional-
Ein Boolean. Wenn auf
true
gesetzt, wird der Buffer bei der Erstellung gemappt, was bedeutet, dass Sie die Werte innerhalb des Buffers sofort durch Aufrufen vonGPUBuffer.getMappedRange()
festlegen können. Der Standardwert istfalse
.Beachten Sie, dass es gültig ist,
mappedAtCreation: true
zu setzen, damit Sie die Anfangsdaten des Puffers festlegen können, auch wenn dieGPUBufferUsage.MAP_READ
oderGPUBufferUsage.MAP_WRITE
Nutzungsflags nicht gesetzt sind. size
-
Eine Zahl, die die Größe des Buffers in Bytes darstellt.
usage
-
Die bitweisen Flags, die die erlaubten Anwendungen für den
GPUBuffer
darstellen. Die möglichen Werte finden Sie in derGPUBuffer.usage
Wertetabelle.Beachten Sie, dass mehrere mögliche Verwendungen durch Trennen der Werte mit bitwise OR angegeben werden können, zum Beispiel:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE
.
Rückgabewert
Ein GPUBuffer
Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createBuffer()
aufgerufen wird, andernfalls wird ein GPUValidationError
erzeugt und ein ungültiges GPUBuffer
Objekt zurückgegeben:
- Eine gültige
usage
ist angegeben. GPUBufferUsage.MAP_READ
ist angegeben, und es werden keine weiteren Flags außerGPUBufferUsage.COPY_DST
angegeben.GPUBufferUsage.MAP_WRITE
ist angegeben, und es werden keine weiteren Flags außerGPUBufferUsage.COPY_SRC
angegeben.mappedAtCreation: true
ist angegeben, und die angegebenesize
ist ein Vielfaches von 4.
Hinweis:
Wenn die Pufferspeicherzuweisung fehlschlägt, ohne dass spezifische Nebeneffekte auftreten, wird ein GPUOutOfMemoryError
Objekt erzeugt.
Beispiele
In unserem Grundlegenden Compute-Demo erstellen wir einen Ausgabepuffer, um die Berechnungen der GPU zu lesen, und einen Staging-Puffer, um für den JavaScript-Zugriff gemappt zu werden.
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createbuffer |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API