GPUCommandEncoder: copyTextureToBuffer() 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.
Die copyTextureToBuffer() Methode der GPUCommandEncoder Schnittstelle 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, aus der die Daten kopiert werden. In Kombination mit
copySizedefiniert es den Bereich der Quelltextur-Subressource.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 alle oder beliebige von Farbe, Tiefe und Stencil bedeuten kann, abhängig vom verwendeten Format.
"depth-only"-
Nur der Tiefenaspekt eines depth-or-stencil format wird kopiert.
"stencil-only"-
Nur der Stencil-Aspekt eines depth-or-stencil format wird kopiert.
Wenn ausgelassen, nimmt
aspectden Wert"all"an. mipLevelOptional-
Eine Zahl, die die Mip-Map-Ebene der Textur darstellt, aus der die Daten kopiert werden sollen. Wenn ausgelassen, wird
mipLevelauf 0 festgelegt. originOptional-
Ein Objekt oder Array, das den Ursprung der Kopie angibt — die minimalen Ecken des Texturbereichs, aus dem die Daten kopiert werden sollen. Zusammen mit
sizedefiniert dies das gesamte Ausmaß des zu kopierenden Bereichs. Die Wertex,yundzwerden auf 0 festgelegt, wenn ein Teil vonoriginweggelassen wird.Beispielsweise können Sie ein Array
[0, 0, 0]oder das entsprechende Objekt{ x: 0, y: 0, z: 0 }übergeben. texture-
Ein
GPUTextureObjekt, das die Textur darstellt, aus der die Daten kopiert werden.
destination-
Ein Objekt, das den Puffer definiert, in den geschrieben werden soll, sowie das Layout der Daten, die in den Puffer geschrieben werden sollen. In Kombination mit
copySizedefiniert es den Bereich des Zielpuffers.sourcekann die folgenden Eigenschaften haben:buffer-
Der
GPUBuffer, in den geschrieben werden soll. offsetOptional-
Der Versatz, in Bytes, vom Beginn von
datazur Startposition, an die die kopierten Daten geschrieben werden sollen. Wenn ausgelassen, wirdoffsetauf 0 festgelegt. bytesPerRowOptional-
Eine Zahl, die den Abstand, in Bytes, zwischen dem Beginn jeder Blockreihe (d.h. einer Reihe vollständiger Texelblöcke) und der folgenden Blockreihe darstellt. Dies ist erforderlich, wenn es mehrere Blockreihen gibt (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 Ihnen den Abstand, in Bytes, zwischen dem Beginn jedes vollständigen Bildes. Dies ist erforderlich, wenn mehrere Bilder kopiert werden sollen.
copySize-
Ein Objekt oder Array, das die Breite, Höhe und die Tiefe/Array-Ebenenzahl der kopierten Daten angibt. Der Breitenwert muss immer angegeben werden, während die Höhen- und Tiefen/Array-Ebenenzahl-Werte optional sind und, wenn weggelassen, auf 1 festgelegt werden.
Beispielsweise können Sie ein Array
[16, 16, 2]oder das entsprechende 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 die source:
mipLevelist kleiner als dieGPUTexture.mipLevelCount.origin.xist ein Vielfaches der Texelblockbreite desGPUTexture.format.origin.yist ein Vielfaches der Texelblockhöhe desGPUTexture.format.- Wenn das
GPUTexture.formatein depth-or-stencil format ist oderGPUTexture.sampleCountmehr als 1 ist, ist die Subressourcengröße gleichsize. - Der
source-GPUTexture.usage](/de/docs/Web/API/GPUTexture/usage) enthält dasGPUTextureUsage.COPY_SRCFlag. - Der
source-GPUTexture.sampleCount](/de/docs/Web/API/GPUTexture/sampleCount) ist 1. source.aspectbezieht sich auf einen einzelnen Aspekt desGPUTexture.format.- Dieser Aspekt ist eine gültige Bildkopiequelle gemäß depth-or-stencil formats.
- Der
sourceist kompatibel mit dercopySize.
Für die destination:
destination.bytesPerRowist ein Vielfaches von 256.- Der
destination.buffer-GPUBuffer.usage](/de/docs/Web/API/GPUBuffer/usage) enthält dasGPUBufferUsage.COPY_DSTFlag.
Beispiele
commandEncoder.copyTextureToBuffer(
{
texture: sourceTexture,
},
{
buffer: destinationBuffer,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Spezifikationen
| Specification |
|---|
| WebGPU> # dom-gpucommandencoder-copytexturetobuffer> |
Browser-Kompatibilität
Loading…
Siehe auch
- Die WebGPU API