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 einen GPUBuffer zur Speicherung von Rohdaten, die in GPU-Operationen verwendet werden sollen.

Syntax

js
createBuffer(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

label Optional

Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

mappedAtCreation Optional

Ein Boolean. Wenn auf true gesetzt, wird der Buffer bei der Erstellung abgebildet, was bedeutet, dass Sie die Werte im Buffer sofort durch Aufruf von GPUBuffer.getMappedRange() setzen können. Der Standardwert ist false.

Beachten Sie, dass es gültig ist, mappedAtCreation: true zu setzen, um die anfänglichen Daten des Buffers festzulegen, selbst wenn die GPUBufferUsage.MAP_READ- oder GPUBufferUsage.MAP_WRITE-Nutzungskennzeichen nicht gesetzt sind.

size

Eine Zahl, die die Größe des Buffers in Bytes darstellt.

usage

Die bitweisen Flags, die die erlaubten Verwendungen für den GPUBuffer darstellen. Die möglichen Werte sind in der GPUBuffer.usage-Wertetabelle aufgeführt.

Beachten Sie, dass mehrere mögliche Verwendungen durch Trennzeichen mit Pipe-Symbolen angegeben werden können, zum Beispiel:

js
usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;

Rückgabewert

Eine Instanz des GPUBuffer-Objekts.

Validierung

Folgende Kriterien müssen erfüllt sein, wenn createBuffer() aufgerufen wird, ansonsten wird ein GPUValidationError erzeugt und ein ungültiges GPUBuffer-Objekt zurückgegeben:

  • Ein gültiger usage wird angegeben.
  • GPUBufferUsage.MAP_READ wird angegeben, und keine zusätzlichen Flags werden angegeben, außer GPUBufferUsage.COPY_DST.
  • GPUBufferUsage.MAP_WRITE wird angegeben, und keine zusätzlichen Flags werden angegeben, außer GPUBufferUsage.COPY_SRC.
  • mappedAtCreation: true ist angegeben, und die angegebene size ist ein Vielfaches von 4.

Hinweis: Wenn die Speicherzuweisung des Buffers 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.

js
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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
createBuffer
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

Siehe auch