GPUBuffer: mapAsync() Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
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 Interfaces mappt den angegebenen Bereich des GPUBuffer. Sie gibt ein Promise zurück, das aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, zugegriffen zu werden. Solange der GPUBuffer gemappt ist, kann er in keinen GPU-Befehlen verwendet werden.
Sobald der Puffer erfolgreich gemappt ist (was über GPUBuffer.mapState überprüft werden kann), geben Aufrufe von GPUBuffer.getMappedRange() einen ArrayBuffer zurück, der 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 zu entmappen und damit der 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 amArrayBuffervonGPUBuffer.getMappedRange()werden verworfen, sobaldGPUBuffer.unmap()aufgerufen wird.Das Lesen im gemappten Modus kann nur bei
GPUBuffers verwendet werden, die fürGPUBufferUsage.MAP_READeingerichtet sind (d.h. beim Erstellen mitGPUDevice.createBuffer()). GPUMapMode.WRITE-
Der
GPUBufferist zum Schreiben gemappt. Werte können gelesen und aktualisiert werden — alle Änderungen amArrayBuffervonGPUBuffer.getMappedRange()werden imGPUBuffergespeichert, sobaldGPUBuffer.unmap()aufgerufen wird.Das Schreiben im gemappten Modus kann nur bei
GPUBuffers verwendet werden, die fürGPUBufferUsage.MAP_WRITEeingerichtet sind (d.h. beim Erstellen mitGPUDevice.createBuffer()).
offsetOptional-
Eine Zahl, die den Offset in Bytes vom Anfang des Puffers bis zum Beginn des zu mappenden Bereichs darstellt. Wenn
offsetnicht angegeben ist, wird standardmäßig 0 verwendet. sizeOptional-
Eine Zahl, die die Größe in Bytes des zu mappenden Bereichs darstellt. Wenn
sizenicht angegeben ist, erstreckt sich der gemappte Bereich bis zum Ende desGPUBuffer.
Rückgabewert
Ein Promise, das zu undefined aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, zugegriffen zu werden.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn mapAsync() aufgerufen wird, ansonsten wird eine OperationError DOMException ausgelöst, das Promise wird abgelehnt, und ein GPUValidationError wird generiert:
offsetist ein Vielfaches von 8.- Der Gesamtbereich, der gemappt werden soll (
size, falls angegeben, oderGPUBuffer.size-offset, falls nicht), ist ein Vielfaches von 4. - Der Gesamtbereich, der gemappt werden soll, liegt im Bereich 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
Sehen Sie auf der Hauptseite zu GPUBuffer nach einem Beispiel.
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpubuffer-mapasync> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API