GPUCommandEncoder: copyTextureToTexture() Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die copyTextureToTexture() Methode der
GPUCommandEncoder-Schnittstelle kodiert einen Befehl, der Daten von einer GPUTexture zu einer anderen kopiert.
Syntax
copyTextureToTexture(source, destination, copySize)
Parameter
source-
Ein Objekt (siehe Kopiervorlage für Texturobjekt), das die Textur definiert, von der die Daten kopiert werden. In Kombination mit
copySizebestimmt es den Bereich des Queltextur-Subressourcen. destination-
Ein Objekt (siehe Kopiervorlage für Texturobjekt), das die Textur definiert, in die die Daten geschrieben werden. In Kombination mit
copySizebestimmt es den Bereich des Zieltextur-Subressourcen. copySize-
Ein Objekt oder Array, das die Breite, Höhe und die Anzahl der Ebenen/Tiefenschichten der kopierten Daten angibt. Der Wert für die Breite muss immer angegeben werden, während die Werte für Höhe und Anzahl der Ebenen/Tiefenschichten optional sind und standardmäßig 1 betragen, wenn sie weggelassen werden.
Zum Beispiel können Sie ein Array
[16, 16, 2]oder das entsprechende Objekt{ width: 16, height: 16, depthOrArrayLayers: 2 }übergeben.
Kopiervorlage für Texturobjekt
Ein Kopiervorlage für ein Texturobjekt hat die folgende Struktur:
aspectOptional-
Ein enumerierter Wert, der bestimmt, welche Aspekte der Textur die Daten von/zu kopieren sind. Mögliche Werte sind:
"all"-
Alle verfügbaren Aspekte des Texturformats werden von/zu kopiert, was je nach dem Format alle oder einige der folgenden Bereiche bedeuten kann: Farbe, Tiefe und Schablone.
"depth-only"-
Nur der Tiefenaspekt eines depth-or-stencil format wird von/zu kopiert.
"stencil-only"-
Nur der Schablonenaspekt eines Tiefen-oder-Schablonenformats wird von/zu kopiert.
Wenn ausgelassen, nimmt
aspectden Wert"all"an. mipLevelOptional-
Eine Zahl, die die Mip-Map-Ebene der Textur angibt, von der/zu der die Daten kopiert werden. Wenn weggelassen, ist der Standardwert für
mipLevel0. originOptional-
Ein Objekt oder Array, das den Ursprung der Kopie/Ziel angibt – die minimale Ecke des Texturbereichs, von dem/zu dem die Daten kopiert werden. Gemeinsam mit
sizewird das gesamte Ausmaß des zu kopierenden Bereichs definiert. Die Wertex,yundzbetragen standardmäßig 0, wennoriginganz oder teilweise weggelassen wird.Zum Beispiel können Sie ein Array wie
[0, 0, 0]oder das entsprechende Objekt{ x: 0, y: 0, z: 0 }übergeben. texture-
Ein
GPUTexture-Objekt, das die Textur repräsentiert, von der/zu der die Daten kopiert werden.
Rückgabewert
Keiner (undefined).
Validierung
Die folgenden Bedingungen müssen erfüllt sein, wenn copyTextureToTexture() aufgerufen wird. Andernfalls wird ein GPUValidationError erzeugt und der GPUCommandEncoder wird ungültig.
Für die source:
- Die
GPUTexture.usagedessource-Objekts muss dasGPUTextureUsage.COPY_SRC-Flag enthalten.
Für die destination:
- Die
GPUTexture.usagedesdestination-Objekts muss dasGPUTextureUsage.COPY_DST-Flag enthalten.
Für source und destination:
mipLevelist kleiner als dieGPUTexture.mipLevelCount.origin.xist ein Vielfaches der Texelblockbreite desGPUTexture.format.origin.yist ein Vielfaches der Texelblockhöhe desGPUTexture.format.- Die
textureGPUTexture.formats der Quelle und des Ziels müssen kopierbar-kompatibel sein. - Die
textureGPUTexture.sampleCounts der Quelle und des Ziels müssen gleich sein. - Wenn das
GPUTexture.formatein depth-or-stencil format ist oder dieGPUTexture.sampleCountgrößer als 1 ist, muss die Subressourcengröße gleichsizesein. - Wenn das
GPUTexture.formatein depth-or-stencil format ist, müssen dieaspects dersourceunddestinationauf alle Aspekte ihrer jeweiligenGPUTexture.formats verweisen. - Die
texturemuss mit dercopySizekompatibel sein. - Die durch
sourcezusammen mitcopySizeunddestinationzusammen mitcopySizedefinierten Subressourcensätze sind disjunkt.
Beispiele
commandEncoder.copyTextureToTexture(
{
texture: sourceTexture,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
Spezifikationen
| Spezifikation |
|---|
| WebGPU> # dom-gpucommandencoder-copytexturetotexture> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API