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

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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

Syntax

js
createBuffer(descriptor)

Parameter

descriptor

Ein Objekt mit den folgenden Eigenschaften:

label Optional

Eine Zeichenfolge mit einer Bezeichnung, anhand derer das Objekt beispielsweise in GPUError-Meldungen oder Konsolenwarnungen identifiziert werden kann.

mappedAtCreation Optional

Ein boolescher Wert. Wenn er auf true gesetzt ist, wird der Buffer bei der Erstellung gemappt. Dadurch können Sie die Werte im Buffer sofort durch Aufrufen von GPUBuffer.getMappedRange() festlegen. Der Standardwert ist false.

Sie können mappedAtCreation: true setzen, um die Anfangsdaten des Buffers festzulegen, auch wenn die Usage-Flags GPUBufferUsage.MAP_READ oder GPUBufferUsage.MAP_WRITE nicht gesetzt sind.

size

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

usage

Die bitweisen Flags, die die zulässigen Verwendungen des GPUBuffer angeben. Die möglichen Werte finden Sie in der Wertetabelle für GPUBuffer.usage.

Sie können mehrere zulässige Verwendungen angeben, indem Sie die Werte mit einem bitweisen OR verknüpfen, zum Beispiel: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE.

Rückgabewert

Eine GPUBuffer-Objektinstanz.

Ausnahmen

RangeError

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

Validierung

Beim Aufrufen von createBuffer() müssen die folgenden Kriterien erfüllt sein. Andernfalls wird ein GPUValidationError erzeugt und ein ungültiges GPUBuffer-Objekt zurückgegeben:

  • Ein gültiger usage-Wert wird angegeben.
  • Wenn GPUBufferUsage.MAP_READ angegeben ist, sind außer GPUBufferUsage.COPY_DST keine weiteren Flags angegeben.
  • Wenn GPUBufferUsage.MAP_WRITE angegeben ist, sind außer GPUBufferUsage.COPY_SRC keine weiteren Flags angegeben.

Hinweis: Wenn die Zuweisung von Speicher für den Buffer ohne bestimmte Nebeneffekte fehlschlägt, wird ein GPUOutOfMemoryError-Objekt erzeugt.

Beispiele

In unserer einfachen Compute-Demo erstellen wir einen Ausgabebuffer, in den Ergebnisse von GPU-Berechnungen geschrieben werden, und einen Staging-Buffer, 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

Spezifikation
WebGPU
# dom-gpudevice-createbuffer

Browser-Kompatibilität

Siehe auch