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
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 amArrayBuffer
vorgenommen werden, das vonGPUBuffer.getMappedRange()
zurückgegeben wird, werden verworfen, sobaldGPUBuffer.unmap()
aufgerufen wird.Die Zuordnung im Lesemodus kann nur bei
GPUBuffer
s verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_READ
eingestellt haben (d.h. bei der Erstellung mitGPUDevice.createBuffer()
). GPUMapMode.WRITE
-
Der
GPUBuffer
ist zum Schreiben zugeordnet. Werte können gelesen und aktualisiert werden – alle Änderungen, die amArrayBuffer
vorgenommen werden, das vonGPUBuffer.getMappedRange()
zurückgegeben wird, werden imGPUBuffer
gespeichert, sobaldGPUBuffer.unmap()
aufgerufen wird.Die Zuordnung im Schreibmodus kann nur bei
GPUBuffer
s verwendet werden, die eine Nutzung vonGPUBufferUsage.MAP_WRITE
eingestellt haben (d.h. bei der Erstellung mitGPUDevice.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 desGPUBuffer
.
Rückgabewert
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 oderGPUBuffer.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 derGPUBuffer
eine Nutzung vonGPUBufferUsage.MAP_READ
. - Wenn der Modus
GPUMapMode.WRITE
ist, hat derGPUBuffer
eine Nutzung vonGPUBufferUsage.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
- Die WebGPU API