Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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 insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DiecreateBuffer()-Methode desGPUDevice-Interfaces erstellt einGPUBuffer, in dem Rohdaten gespeichert werden, die in GPU-Operationen verwendet werden sollen.
In diesem Artikel
Syntax
createBuffer(descriptor)Parameter
descriptorEin Objekt, das die folgenden Eigenschaften enthält:
labelOptionalEin String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, zum Beispiel in
GPUError-Nachrichten oder Konsolenwarnungen.mappedAtCreationOptionalEin 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.sizeEine Zahl, die die Größe des Buffers in Bytes darstellt. Wenn
mappedAtCreationauftruegesetzt ist, muss dies ein Vielfaches von4sein.usageDiebitweisen 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 mitbitwise OR getrennt werden, zum Beispiel:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE.
Rückgabewert
EineGPUBuffer-Objektinstanz.
Ausnahmen
RangeErrorDOMExceptionWird ausgelöst, wenn
mappedAtCreationauftruegesetzt ist und die angegebenesizekein Vielfaches von4ist.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenncreateBuffer() aufgerufen wird. Andernfalls wird einGPUValidationError erzeugt und ein ungültigesGPUBuffer-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 einGPUOutOfMemoryError-Objekt erzeugt.
Beispiele
In unseremgrundlegenden 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
Siehe auch
- DieWebGPU API