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 des GPUBuffer Schnittstelle mappt den angegebenen Bereich des GPUBuffer. Sie gibt ein Promise zurück, das aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, darauf zugegriffen zu werden. Während der GPUBuffer gemappt ist, kann er in keinem GPU-Befehl verwendet werden.
Sobald der Puffer erfolgreich gemappt ist (was über GPUBuffer.mapState überprüft werden kann), geben Aufrufe von GPUBuffer.getMappedRange() ein ArrayBuffer zurück, das die aktuellen Werte des GPUBuffer enthält, um von JavaScript nach Bedarf gelesen und aktualisiert zu werden.
Wenn Sie die Arbeit mit den GPUBuffer-Werten beendet haben, rufen Sie GPUBuffer.unmap() auf, um ihn aufzuheben und dem GPU wieder zugänglich zu machen.
Syntax
mapAsync(mode)
mapAsync(mode, offset, size)
Parameter
mode-
Ein bitweises Flag, das angibt, ob der
GPUBufferzum Lesen oder Schreiben gemappt ist. Mögliche Werte sind:GPUMapMode.READ-
Der
GPUBufferist zum Lesen gemappt. Werte können gelesen werden, aber alle Änderungen, die am zurückgegebenenArrayBufferdurchGPUBuffer.getMappedRange()vorgenommen werden, werden verworfen, sobaldGPUBuffer.unmap()aufgerufen wird.Das Lesen-Modus-Mapping kann nur auf
GPUBuffers verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_READhaben (d.h. wenn sie mitGPUDevice.createBuffer()erstellt wurden). GPUMapMode.WRITE-
Der
GPUBufferist zum Schreiben gemappt. Werte können gelesen und aktualisiert werden — alle Änderungen, die am zurückgegebenenArrayBufferdurchGPUBuffer.getMappedRange()vorgenommen werden, werden auf demGPUBuffergespeichert, sobaldGPUBuffer.unmap()aufgerufen wird.Das Schreiben-Modus-Mapping kann nur auf
GPUBuffers verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_WRITEhaben (d.h. wenn sie mitGPUDevice.createBuffer()erstellt wurden).
offsetOptional-
Eine Zahl, die den Offset in Bytes vom Anfang des Puffers bis zum Beginn des zu mappenden Bereichs darstellt. Wenn
offsetweggelassen wird, beträgt er standardmäßig 0. sizeOptional-
Eine Zahl, die die Größe des zu mappenden Bereichs in Bytes darstellt. Wenn
sizeweggelassen wird, erstreckt sich der gemappte Bereich bis zum Ende desGPUBuffer.
Rückgabewert
Ein Promise, das auf Undefined aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, darauf zugegriffen zu werden.
Validierung
Die folgenden Kriterien müssen beim Aufruf von mapAsync() erfüllt sein, andernfalls wird eine OperationError DOMException ausgelöst, das Versprechen wird abgelehnt und ein GPUValidationError wird generiert:
offsetist ein Vielfaches von 8.- Der gesamte zu mappende Bereich (
sizefalls angegeben, oderGPUBuffer.size-offsetfalls nicht) ist ein Vielfaches von 4. - Der gesamte zu mappende Bereich liegt innerhalb der Grenzen des
GPUBuffer. - Wenn der Modus
GPUMapMode.READist, hat derGPUBuffereine Nutzung vonGPUBufferUsage.MAP_READ. - Wenn der Modus
GPUMapMode.WRITEist, hat derGPUBuffereine Nutzung vonGPUBufferUsage.MAP_WRITE.
Beispiele
Siehe die Hauptseite GPUBuffer für ein Beispiel.
Spezifikationen
| Specification |
|---|
| WebGPU> # dom-gpubuffer-mapasync> |
Browser-Kompatibilität
Loading…
Siehe auch
- Die WebGPU API