GPUCommandEncoder: Methode copyTextureToBuffer()
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.
Die Methode copyTextureToBuffer() des GPUCommandEncoder-Interfaces kodiert einen Befehl, der Daten von einer GPUTexture in einen GPUBuffer kopiert.
Syntax
copyTextureToBuffer(source, destination, copySize)
Parameter
source-
Ein Objekt, das die Textur definiert, von der die Daten kopiert werden. Zusammen mit
copySizedefiniert es den Bereich der Quellentextur-Teilressource.sourcekann die folgenden Eigenschaften haben:aspectOptional-
Ein enumerierter Wert, der definiert, welche Aspekte der Textur kopiert werden sollen. Mögliche Werte sind:
"all"-
Alle verfügbaren Aspekte des Texturformats werden kopiert, was je nach Format alle oder beliebige von Farbe, Tiefe und Stencil bedeuten kann.
"depth-only"-
Nur der Tiefenaspekt eines Depth-or-Stencil-Formats wird kopiert.
"stencil-only"-
Nur der Stencil-Aspekt eines Depth-or-Stencil-Formats wird kopiert.
Wenn weggelassen, hat
aspectden Wert"all". mipLevelOptional-
Eine Zahl, die die Mip-Map-Stufe der Textur darstellt, von der die Daten kopiert werden. Wenn weggelassen, ist der Standardwert von
mipLevel0. originOptional-
Ein Objekt oder Array, das den Ursprung des Kopiervorgangs spezifiziert — die minimale Ecke des Texturbereichs, von dem die Daten kopiert werden. Zusammen mit
sizedefiniert dies den gesamten Umfang des zu kopierenden Bereichs. Die Wertex,yundzsind 0, wenn jegliche Komponenten vonoriginweggelassen werden.Sie können beispielsweise ein Array
[0, 0, 0]oder sein äquivalentes Objekt{ x: 0, y: 0, z: 0 }übergeben. texture-
Ein
GPUTexture-Objekt, das die Textur darstellt, von der die Daten kopiert werden.
destination-
Ein Objekt, das den Buffer definiert, in den geschrieben wird, sowie das Layout der zu schreibenden Daten. Zusammen mit
copySizedefiniert es den Bereich des Ziel-Buffers.sourcekann die folgenden Eigenschaften haben:buffer-
Der
GPUBuffer, in den geschrieben wird. offsetOptional-
Der Versatz in Bytes vom Anfang der
datazur Startposition, an die die kopierten Daten geschrieben werden. Wenn weggelassen, beträgt der Standardwert füroffset0. bytesPerRowOptional-
Eine Zahl, die die Schrittweite in Bytes zwischen dem Beginn jeder Blockreihe (d.h. einer Reihe kompletter Texelblöcke) und der nachfolgenden Blockreihe darstellt. Dies ist erforderlich, wenn mehrere Blockreihen vorhanden sind (d.h. die Kopierhöhe oder -tiefe ist mehr als ein Block).
rowsPerImageOptional-
Die Anzahl der Blockreihen pro einzelnes Bild innerhalb der Daten.
bytesPerRow×rowsPerImagegibt den Abstand in Bytes zwischen dem Beginn jedes vollständigen Bildes an. Dies ist erforderlich, wenn mehrere Bilder kopiert werden sollen.
copySize-
Ein Objekt oder Array, das die Breite, Höhe und Tiefe/Anzahl von Array-Schichten der kopierten Daten spezifiziert. Der Wert der Breite muss immer angegeben werden, während die Werte für Höhe und Tiefe/Anzahl von Array-Schichten optional sind und auf 1 standardmäßig gesetzt werden, wenn sie weggelassen werden.
Sie können beispielsweise ein Array
[16, 16, 2]oder dessen äquivalentes Objekt{ width: 16, height: 16, depthOrArrayLayers: 2 }übergeben.
Rückgabewert
Keiner (undefined).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn copyTextureToBuffer() aufgerufen wird, andernfalls wird ein GPUValidationError erzeugt und der GPUCommandEncoder wird ungültig.
Für source:
mipLevelist kleiner als derGPUTexture.mipLevelCount.origin.xist ein Vielfaches der Texelblock-Breite desGPUTexture.format.origin.yist ein Vielfaches der Texelblock-Höhe desGPUTexture.format.- Wenn das
GPUTexture.formatein Depth-or-Stencil-Format ist oderGPUTexture.sampleCountmehr als 1 ist, muss die Größe der Teilressource gleichsizesein. - Die
source-EigenschaftGPUTexture.usageenthält dasGPUTextureUsage.COPY_SRC-Flag. - Die
source-EigenschaftGPUTexture.sampleCountist 1. source.aspectbezieht sich auf einen einzigen Aspekt desGPUTexture.format.- Dieser Aspekt ist eine gültige Bildkopierquelle gemäß Depth-or-Stencil-Formaten.
- Die
sourceist mitcopySizekompatibel.
Für destination:
destination.bytesPerRowist ein Vielfaches von 256.- Der
destination.buffer-EigenschaftGPUBuffer.usageenthält dasGPUBufferUsage.COPY_DST-Flag.
Beispiele
commandEncoder.copyTextureToBuffer(
{
texture: sourceTexture,
},
{
buffer: destinationBuffer,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpucommandencoder-copytexturetobuffer> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU-API