GPUBuffer: mapAsync() 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 mapAsync() Methode der GPUBuffer Schnittstelle ordnet den angegebenen Bereich des GPUBuffer zu. Sie gibt ein Promise zurück, das erfüllt wird, wenn der Inhalt des GPUBuffer bereit ist, zugegriffen zu werden. Solange der GPUBuffer zugeordnet ist, kann er in keinen GPU-Befehlen verwendet werden.

Sobald der Puffer erfolgreich zugeordnet wurde (dies kann über GPUBuffer.mapState überprüft werden), geben Aufrufe von GPUBuffer.getMappedRange() ein ArrayBuffer zurück, das die aktuellen Werte des GPUBuffer enthält, die nach Bedarf von JavaScript gelesen und aktualisiert werden können.

Wenn Sie die Arbeit mit den GPUBuffer-Werten abgeschlossen haben, rufen Sie GPUBuffer.unmap() auf, um ihn aufzuheben, damit er wieder auf die GPU zugreifen kann.

Syntax

js
mapAsync(mode)
mapAsync(mode, offset, size)

Parameter

mode

Ein bitweises Flag, das angibt, ob der GPUBuffer zum Lesen oder Schreiben zugeordnet ist. Mögliche Werte sind:

GPUMapMode.READ

Der GPUBuffer ist zum Lesen zugeordnet. Werte können gelesen werden, aber alle Änderungen, die am ArrayBuffer vorgenommen werden, das von GPUBuffer.getMappedRange() zurückgegeben wird, werden verworfen, sobald GPUBuffer.unmap() aufgerufen wird.

Die Zuordnung im Lesemodus kann nur bei GPUBuffers verwendet werden, die eine Nutzung von GPUBufferUsage.MAP_READ eingestellt haben (d.h. bei der Erstellung mit GPUDevice.createBuffer()).

GPUMapMode.WRITE

Der GPUBuffer ist zum Schreiben zugeordnet. Werte können gelesen und aktualisiert werden – alle Änderungen, die am ArrayBuffer vorgenommen werden, das von GPUBuffer.getMappedRange() zurückgegeben wird, werden im GPUBuffer gespeichert, sobald GPUBuffer.unmap() aufgerufen wird.

Die Zuordnung im Schreibmodus kann nur bei GPUBuffers verwendet werden, die eine Nutzung von GPUBufferUsage.MAP_WRITE eingestellt haben (d.h. bei der Erstellung mit GPUDevice.createBuffer()).

offset Optional

Eine Zahl, die den Offset in Bytes vom Anfang des Puffers bis zum Beginn des Bereichs darstellt, der zugeordnet werden soll. Wenn offset weggelassen wird, ist der Standardwert 0.

size Optional

Eine Zahl, die die Größe in Bytes des Bereichs darstellt, der zugeordnet werden soll. Wenn size weggelassen wird, erstreckt sich der zugeordnete Bereich bis zum Ende des GPUBuffer.

Rückgabewert

Ein Promise, das sich zu Undefined auflöst, wenn der Inhalt des GPUBuffer bereit ist, darauf zugegriffen zu werden.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn mapAsync() aufgerufen wird, andernfalls wird ein OperationError DOMException ausgelöst, das Promise wird abgelehnt und ein GPUValidationError wird generiert:

  • offset ist ein Vielfaches von 8.
  • Der gesamte Bereich, der zugeordnet werden soll (size falls angegeben oder GPUBuffer.size - offset falls nicht), ist ein Vielfaches von 4.
  • Der gesamte Bereich, der zugeordnet werden soll, liegt innerhalb der Grenzen des GPUBuffer.
  • Wenn der Modus GPUMapMode.READ ist, hat der GPUBuffer eine Nutzung von GPUBufferUsage.MAP_READ.
  • Wenn der Modus GPUMapMode.WRITE ist, hat der GPUBuffer eine Nutzung von GPUBufferUsage.MAP_WRITE.

Beispiele

Sehen Sie sich die Hauptseite GPUBuffer für ein Beispiel an.

Spezifikationen

Specification
WebGPU
# dom-gpubuffer-mapasync

Browser-Kompatibilität

Siehe auch