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 der GPUDevice-Schnittstelle erstellt einen GPUBuffer, in dem rohe Daten für die Verwendung in GPU-Operationen gespeichert werden.

Syntax

js
createBuffer(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

label Optional

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

mappedAtCreation Optional

Ein Boolean. Wenn auf true gesetzt, wird der Buffer bei der Erstellung gemappt, was bedeutet, dass Sie die Werte innerhalb des Buffers sofort durch Aufrufen von GPUBuffer.getMappedRange() festlegen können. Der Standardwert ist false.

Beachten Sie, dass es gültig ist, mappedAtCreation: true zu setzen, damit Sie die Anfangsdaten des Puffers festlegen können, auch wenn die GPUBufferUsage.MAP_READ oder GPUBufferUsage.MAP_WRITE Nutzungsflags nicht gesetzt sind.

size

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

usage

Die bitweisen Flags, die die erlaubten Anwendungen für den GPUBuffer darstellen. Die möglichen Werte finden Sie in der GPUBuffer.usage Wertetabelle.

Beachten Sie, dass mehrere mögliche Verwendungen durch Trennen der Werte mit bitwise OR angegeben werden können, zum Beispiel: 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 erzeugt und ein ungültiges GPUBuffer Objekt zurückgegeben:

  • Eine gültige usage ist angegeben.
  • GPUBufferUsage.MAP_READ ist angegeben, und es werden keine weiteren Flags außer GPUBufferUsage.COPY_DST angegeben.
  • GPUBufferUsage.MAP_WRITE ist angegeben, und es werden keine weiteren Flags außer GPUBufferUsage.COPY_SRC angegeben.
  • mappedAtCreation: true ist angegeben, und die angegebene size ist ein Vielfaches von 4.

Hinweis: Wenn die Pufferspeicherzuweisung fehlschlägt, ohne dass spezifische Nebeneffekte auftreten, wird ein GPUOutOfMemoryError Objekt erzeugt.

Beispiele

In unserem Grundlegenden Compute-Demo erstellen wir einen Ausgabepuffer, um die Berechnungen der GPU zu lesen, und einen Staging-Puffer, um für den JavaScript-Zugriff gemappt zu werden.

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

Siehe auch