GPUBuffer: mapAsync()-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, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die mapAsync()
-Methode der 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 zuzugreifen. Solange der GPUBuffer
gemappt ist, kann er nicht in GPU-Befehlen verwendet werden.
Sobald der Puffer erfolgreich gemappt wurde (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 abgeschlossen haben, rufen Sie GPUBuffer.unmap()
auf, um ihn zu entmappen und erneut für die GPU zugänglich zu machen.
Syntax
mapAsync(mode)
mapAsync(mode, offset, size)
Parameter
mode
-
Ein Bit-Flag, das angibt, ob der
GPUBuffer
für Lese- oder Schreibzugriffe gemappt ist. Mögliche Werte sind:GPUMapMode.READ
-
Der
GPUBuffer
ist zum Lesen gemappt. Werte können gelesen werden, aber alle Änderungen, die am vonGPUBuffer.getMappedRange()
zurückgegebenenArrayBuffer
vorgenommen werden, werden verworfen, sobaldGPUBuffer.unmap()
aufgerufen wird.Das Lesen im gemappten Modus kann nur auf
GPUBuffer
s verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_READ
gesetzt haben (d. h. wenn sie mitGPUDevice.createBuffer()
erstellt wurden). GPUMapMode.WRITE
-
Der
GPUBuffer
ist zum Schreiben gemappt. Werte können gelesen und aktualisiert werden – alle Änderungen, die am vonGPUBuffer.getMappedRange()
zurückgegebenenArrayBuffer
vorgenommen werden, werden imGPUBuffer
gespeichert, sobaldGPUBuffer.unmap()
aufgerufen wird.Das Schreiben im gemappten Modus kann nur auf
GPUBuffer
s verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_WRITE
gesetzt haben (d. h. wenn sie mitGPUDevice.createBuffer()
erstellt wurden).
offset
Optional-
Eine Zahl, die den Versatz in Bytes vom Anfang des Puffers bis zum Beginn des zu mappenden Bereichs darstellt. Wenn
offset
weggelassen wird, ist der Standardwert 0. size
Optional-
Eine Zahl, die die Größe in Bytes des zu mappenden Bereichs darstellt. Wenn
size
weggelassen wird, erstreckt sich der zu mappende Bereich bis zum Ende desGPUBuffer
.
Rückgabewert
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn mapSync()
aufgerufen wird, andernfalls wird eine OperationError
DOMException
ausgelöst, das Promise wird abgelehnt, und ein GPUValidationError
wird generiert:
offset
ist ein Vielfaches von 8.- Der gesamte zu mappende Bereich (
size
falls angegeben, oderGPUBuffer.size
-offset
falls nicht) ist ein Vielfaches von 4. - Der gesamte zu mappende Bereich liegt innerhalb der Grenzen des
GPUBuffer
. - Falls der Modus
GPUMapMode.READ
ist, hat derGPUBuffer
eine Nutzung vonGPUBufferUsage.MAP_READ
. - Falls der Modus
GPUMapMode.WRITE
ist, hat derGPUBuffer
eine Nutzung vonGPUBufferUsage.MAP_WRITE
.
Beispiele
Sehen Sie sich die Hauptseite von GPUBuffer
für ein Beispiel an.
Spezifikationen
Specification |
---|
WebGPU # dom-gpubuffer-mapasync |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API