GPUDevice: createBuffer()-Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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 des GPUDevice
-Interfaces erstellt ein GPUBuffer
, in dem rohe Daten gespeichert werden, die in GPU-Operationen verwendet werden können.
Syntax
createBuffer(descriptor)
Parameter
descriptor
-
Ein Objekt, das die folgenden Eigenschaften enthält:
label
Optional-
Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in
GPUError
-Nachrichten oder Konsolenwarnungen. mappedAtCreation
Optional-
Ein Boolean. Wenn auf
true
gesetzt, wird der Buffer bei der Erstellung gemappt, was bedeutet, dass Sie die Werte im Buffer sofort festlegen können, indem SieGPUBuffer.getMappedRange()
aufrufen. Der Standardwert istfalse
.Beachten Sie, dass es zulässig ist,
mappedAtCreation: true
zu setzen, um die Anfangsdaten des Buffers festzulegen, auch wenn die NutzungsflagsGPUBufferUsage.MAP_READ
oderGPUBufferUsage.MAP_WRITE
nicht gesetzt sind. size
-
Eine Zahl, die die Größe des Buffers in Bytes repräsentiert.
usage
-
Die Bitweise Flags, die die erlaubten Nutzungen für den
GPUBuffer
darstellen. Die möglichen Werte sind in derGPUBuffer.usage
-Wertetabelle aufgeführt.Beachten Sie, dass mehrere mögliche Nutzungen angegeben werden können, indem Werte mit bitweise ODER getrennt werden, z.B.:
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
generiert und ein ungültiges GPUBuffer
-Objekt zurückgegeben:
- Ein gültiges
usage
ist angegeben. GPUBufferUsage.MAP_READ
ist angegeben, und keine zusätzlichen Flags sind angegeben außerGPUBufferUsage.COPY_DST
.GPUBufferUsage.MAP_WRITE
ist angegeben, und keine zusätzlichen Flags sind angegeben außerGPUBufferUsage.COPY_SRC
.mappedAtCreation: true
ist angegeben, und die angegebenesize
ist ein Vielfaches von 4.
Hinweis:
Wenn die Buffer-Allokation fehlschlägt, ohne spezifische Nebeneffekte zu verursachen, wird ein GPUOutOfMemoryError
-Objekt generiert.
Beispiele
In unserem Grundlagen-Demo zur Berechnung erstellen wir einen Ausgabepuffer, um GPU-Berechnungen zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript gemappt wird.
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