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 des GPUDevice-Interfaces erstellt ein GPUBuffer, in dem Rohdaten gespeichert werden, die in GPU-Operationen verwendet werden sollen.
Syntax
createBuffer(descriptor)
Parameter
descriptor-
Ein Objekt, das die folgenden Eigenschaften enthält:
labelOptional-
Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in
GPUError-Nachrichten oder Konsolenwarnungen. mappedAtCreationOptional-
Ein Boolean. Wenn auf
truegesetzt, wird der Buffer bei der Erstellung abgebildet, was bedeutet, dass Sie die Werte innerhalb des Buffers sofort festlegen können, indem SieGPUBuffer.getMappedRange()aufrufen. Der Standardwert istfalse.Beachten Sie, dass es gültig ist,
mappedAtCreation: truezu setzen, um die anfänglichen Daten des Buffers festzulegen, selbst wenn dieGPUBufferUsage.MAP_READoderGPUBufferUsage.MAP_WRITENutzungsflags nicht gesetzt sind. size-
Eine Zahl, die die Größe des Buffers in Bytes darstellt. Wenn
mappedAtCreationauftruegesetzt ist, muss dies ein Vielfaches von4sein. usage-
Die bitweisen Flags, die die erlaubten Nutzungen für den
GPUBufferdarstellen. Die möglichen Werte sind in derGPUBuffer.usageWerte-Tabelle aufgeführt.Beachten Sie, dass mehrere mögliche Nutzungen angegeben werden können, indem Werte mit bitwise OR getrennt werden, zum Beispiel:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE.
Rückgabewert
Eine GPUBuffer-Objektinstanz.
Ausnahmen
RangeErrorDOMException-
Wird ausgelöst, wenn
mappedAtCreationauftruegesetzt ist und die angegebenesizekein Vielfaches von4ist.
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
usageist angegeben. GPUBufferUsage.MAP_READist angegeben, und es sind keine zusätzlichen Flags außerGPUBufferUsage.COPY_DSTangegeben.GPUBufferUsage.MAP_WRITEist angegeben, und es sind keine zusätzlichen Flags außerGPUBufferUsage.COPY_SRCangegeben.
Hinweis:
Wenn die Pufferzuordnung ohne spezifische Nebeneffekte fehlschlägt, wird ein GPUOutOfMemoryError-Objekt erzeugt.
Beispiele
In unserem grundlegenden Berechnungs-Demo erstellen wir einen Ausgabepuffer, um GPU-Berechnungen zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript abgebildet 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
Loading…
Siehe auch
- Die WebGPU API