GPUCommandEncoder: copyBufferToTexture() 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.
Die copyBufferToTexture() Methode der GPUCommandEncoder Schnittstelle kodiert einen Befehl, der Daten von einem GPUBuffer zu einer GPUTexture kopiert.
Syntax
copyBufferToTexture(source, destination, copySize)
Parameter
source-
Ein Objekt, das den Puffer definiert, von dem kopiert werden soll, sowie das Layout der Daten im Puffer, die in die Textur kopiert werden sollen. In Kombination mit
copySizedefiniert es den Bereich des Quellpuffers.sourcekann folgende Eigenschaften haben:buffer-
Der
GPUBuffer, von dem kopiert werden soll. offsetOptional-
Der Offset, in Bytes, vom Anfang von
databis zum Start der zu kopierenden Bilddaten. Wenn nicht angegeben, ist der Standardwert vonoffset0. bytesPerRowOptional-
Eine Zahl, die die Schrittweite in Bytes zwischen dem Beginn jeder Blockzeile (d.h. einer Zeile vollständiger Texelblöcke) und der nächsten Blockzeile angibt. Dies ist erforderlich, wenn mehrere Blockzeilen vorhanden sind (d.h. wenn die Kopierhöhe oder -tiefe mehr als ein Block ist).
rowsPerImageOptional-
Die Anzahl der Blockzeilen pro einzelnen Bild innerhalb der Daten.
bytesPerRow×rowsPerImageergibt die Schrittweite in Bytes zwischen dem Beginn jedes vollständigen Bildes. Dies ist erforderlich, wenn mehrere Bilder kopiert werden sollen.
destination-
Ein Objekt, das die Textur definiert, in die die Daten geschrieben werden sollen. In Kombination mit
copySizedefiniert es den Bereich der Zieltextur-Subressource.destinationkann folgende Eigenschaften haben:aspectOptional-
Ein enumerierter Wert, der definiert, in welche Aspekte der Textur die Daten geschrieben werden sollen. Mögliche Werte sind:
"all"-
Alle verfügbaren Aspekte des Texturformats werden beschrieben, was je nach Format alle oder einige der Aspekte Farbe, Tiefe und Stencil umfassen kann.
"depth-only"-
Nur der Tiefenaspekt eines depth-or-stencil format wird beschrieben.
"stencil-only"-
Nur der Stencil-Aspekt eines depth-or-stencil Formats wird beschrieben.
Wenn nicht angegeben, nimmt
aspectden Wert"all"an. mipLevelOptional-
Eine Zahl, die das Mip-Map-Level der Textur darstellt, in das die Daten geschrieben werden sollen. Wenn nicht angegeben, beträgt der Standardwert von
mipLevel0. originOptional-
Ein Objekt oder Array, das den Ursprung der Kopie angibt – die minimale Ecke des Texturbereichs, in den die Daten geschrieben werden sollen. Zusammen mit
sizewird der volle Umfang des zu kopierenden Bereichs definiert. Die Wertex,yundzsind 0, wennoriginganz oder teilweise weggelassen wird.Zum Beispiel können Sie ein Array wie
[0, 0, 0]oder dessen äquivalentes Objekt{ x: 0, y: 0, z: 0 }übergeben. texture-
Ein
GPUTextureObjekt, das die Textur darstellt, in die die Daten geschrieben werden sollen.
copySize-
Ein Objekt oder Array, das die Breite, Höhe und Tiefe/Array-Layer-Anzahl der kopierten Daten spezifiziert. Der Wert für die Breite muss immer angegeben werden, während die Werte für Höhe und Tiefe/Array-Layer-Anzahl optional sind und, wenn weggelassen, standardmäßig 1 ist.
Zum Beispiel können Sie 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 copyBufferToTexture() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und der GPUCommandEncoder wird ungültig.
Für den source:
source.bytesPerRowist ein Vielfaches von 256.- Die
GPUBuffer.usagedessource.bufferenthält dasGPUBufferUsage.COPY_SRC-Flag.
Für den destination:
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 oder dieGPUTexture.sampleCountmehr als 1 beträgt, ist die Subressourcengröße gleichsize. - Die
GPUTexture.usagedesdestinationenthält dasGPUTextureUsage.COPY_DST-Flag. - Die
GPUTexture.sampleCountdesdestinationist 1. destination.aspectbezieht sich auf einen einzigen Aspekt desGPUTexture.format.- Dieser Aspekt ist ein gültiges Ziel für das Kopieren von Bildern gemäß depth-or-stencil formats.
- Das
destinationist mit demcopySizekompatibel.
Beispiele
commandEncoder.copyBufferToTexture(
{
buffer: sourceBuffer,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpucommandencoder-copybuffertotexture> |
Browser-Kompatibilität
Siehe auch
- Das WebGPU API