GPUCommandEncoder: copyTextureToTexture() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

copyTextureToTexture() 方法是 GPUCommandEncoder 介面的一部分,用於編碼將資料從一個 GPUTexture 複製到另一個的命令。

語法

js
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 的任何部分(或全部),則 xyz 值預設為 0。

例如,您可以傳遞一個數組,如 [0, 0, 0],或其等效物件 { x: 0, y: 0, z: 0 }

texture

一個 GPUTexture 物件,代表要從中/向其複製資料的紋理。

返回值

無 (Undefined)。

驗證

呼叫 copyTextureToTexture() 時必須滿足以下條件,否則將生成 GPUValidationError,並且 GPUCommandEncoder 會失效。

對於 source

對於 destination

對於 sourcedestination

示例

js
commandEncoder.copyTextureToTexture(
  {
    texture: sourceTexture,
  },
  {
    texture: destinationTexture,
  },
  {
    width: 16,
    height: 16,
    depthOrArrayLayers: 2,
  },
);

規範

規範
WebGPU
# dom-gpucommandencoder-copytexturetotexture

瀏覽器相容性

另見