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

BCD tables only load in the browser

Siehe auch