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 ein GPUBuffer, in dem rohe Daten gespeichert werden, die in GPU-Operationen verwendet werden können.

Syntax

js
createBuffer(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

label Optional

Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in GPUError-Nachrichten oder Konsolenwarnungen.

mappedAtCreation Optional

Ein Boolean. Wenn auf true gesetzt, wird der Buffer bei der Erstellung gemappt, was bedeutet, dass Sie die Werte im Buffer sofort festlegen können, indem Sie GPUBuffer.getMappedRange() aufrufen. Der Standardwert ist false.

Beachten Sie, dass es zulässig ist, mappedAtCreation: true zu setzen, um die Anfangsdaten des Buffers festzulegen, auch wenn die Nutzungsflags GPUBufferUsage.MAP_READ oder GPUBufferUsage.MAP_WRITE nicht gesetzt sind.

size

Eine Zahl, die die Größe des Buffers in Bytes repräsentiert.

usage

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

Beachten Sie, dass mehrere mögliche Nutzungen angegeben werden können, indem Werte mit bitweise ODER getrennt werden, z.B.: 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 generiert und ein ungültiges GPUBuffer-Objekt zurückgegeben:

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

Hinweis: Wenn die Buffer-Allokation fehlschlägt, ohne spezifische Nebeneffekte zu verursachen, wird ein GPUOutOfMemoryError-Objekt generiert.

Beispiele

In unserem Grundlagen-Demo zur Berechnung erstellen wir einen Ausgabepuffer, um GPU-Berechnungen zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript gemappt 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

Siehe auch