Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 des GPUDevice-Interfaces erstellt ein GPUBuffer, in dem Rohdaten gespeichert werden, 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, zum Beispiel in GPUError-Nachrichten oder Konsolenwarnungen.

mappedAtCreation Optional

Ein Boolean. Wenn auf true gesetzt, wird der Buffer bei der Erstellung abgebildet, was bedeutet, dass Sie die Werte innerhalb des Buffers sofort festlegen können, indem Sie GPUBuffer.getMappedRange() aufrufen. 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 Nutzungsflags nicht gesetzt sind.

size

Eine Zahl, die die Größe des Buffers in Bytes darstellt. Wenn mappedAtCreation auf true gesetzt ist, muss dies ein Vielfaches von 4 sein.

usage

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

Beachten Sie, dass mehrere mögliche Nutzungen angegeben werden können, indem Werte mit bitwise OR getrennt werden, zum Beispiel: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE.

Rückgabewert

Eine GPUBuffer-Objektinstanz.

Ausnahmen

RangeError DOMException

Wird ausgelöst, wenn mappedAtCreation auf true gesetzt ist und die angegebene size kein Vielfaches von 4 ist.

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 sind keine zusätzlichen Flags außer GPUBufferUsage.COPY_DST angegeben.
  • GPUBufferUsage.MAP_WRITE ist angegeben, und es sind keine zusätzlichen Flags außer GPUBufferUsage.COPY_SRC angegeben.

Hinweis: Wenn die Pufferzuordnung 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

Siehe auch