GPUCommandEncoder: copyTextureToTexture() 方法
copyTextureToTexture() 方法是 GPUCommandEncoder 介面的一部分,用於編碼將資料從一個 GPUTexture 複製到另一個的命令。
語法
copyTextureToTexture(source, destination, copySize)
引數
source-
一個定義要從中複製資料的紋理的物件(參見 Copy texture object structure)。結合
copySize,這定義了源紋理子資源的區域。 destination-
一個定義要寫入資料的紋理的物件(參見 Copy texture object structure)。結合
copySize,這定義了目標紋理子資源的區域。 copySize-
一個物件或陣列,指定複製資料的寬度、高度和深度/陣列層數。寬度值必須始終指定,而高度和深度/陣列層數是可選的,如果省略則預設為 1。
例如,您可以傳遞一個數組
[16, 16, 2],或等效的物件{ width: 16, height: 16, depthOrArrayLayers: 2 }。
Copy texture object structure
複製紋理物件具有以下結構
aspect可選-
一個列舉值,定義了要從中/向其複製資料的紋理的哪些方面。可能的值為:
"all"-
紋理格式的所有可用方面都將從中/向其複製,這可能意味著顏色、深度和模板中的所有或任何方面,具體取決於您處理的格式型別。
"depth-only"-
僅從/向 深度或模板格式 複製深度方面。
"stencil-only"-
僅從中/向深度或模板格式複製模板方面。
如果省略,
aspect的值為"all"。 mipLevel可選-
一個數字,表示要從中/向其複製資料的紋理的 mipmap 級別。如果省略,
mipLevel預設為 0。 origin可選-
一個物件或陣列,指定複製/目標的起點——要從中/向其複製資料的紋理區域的最小角。與
size一起,這定義了要從中/向其複製的區域的完整範圍。如果省略了origin的任何部分(或全部),則x、y和z值預設為 0。例如,您可以傳遞一個數組,如
[0, 0, 0],或其等效物件{ x: 0, y: 0, z: 0 }。 texture-
一個
GPUTexture物件,代表要從中/向其複製資料的紋理。
返回值
無 (Undefined)。
驗證
呼叫 copyTextureToTexture() 時必須滿足以下條件,否則將生成 GPUValidationError,並且 GPUCommandEncoder 會失效。
對於 source:
source的GPUTexture.usage包含GPUTextureUsage.COPY_SRC標誌。
對於 destination:
source的GPUTexture.usage包含GPUTextureUsage.COPY_DST標誌。
對於 source 和 destination
mipLevel小於GPUTexture.mipLevelCount。origin.x是GPUTexture.format的 texel 塊寬度的倍數。origin.y是GPUTexture.format的 texel 塊高度的倍數。- 源和目標
texture的GPUTexture.format是可複製相容的。 - 源和目標
texture的GPUTexture.sampleCount相等。 - 如果
GPUTexture.format是 深度或模板格式,或者GPUTexture.sampleCount大於 1,則子資源大小等於size。 texture的GPUTexture.sampleCount為 1。aspect指的是GPUTexture.format的單個方面。- 該方面根據 深度或模板格式 是有效的影像複製源/目標。
texture與copySize相容。
示例
commandEncoder.copyTextureToTexture(
{
texture: sourceTexture,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
規範
| 規範 |
|---|
| WebGPU # dom-gpucommandencoder-copytexturetotexture |
瀏覽器相容性
載入中…