GPUCommandEncoder: copyBufferToTexture() 方法
copyBufferToTexture() 方法是 GPUCommandEncoder 介面的一部分,用於編碼一個命令,將資料從 GPUBuffer 複製到 GPUTexture。
語法
copyBufferToTexture(source, destination, copySize)
引數
source-
一個定義要從中複製資料的緩衝區,以及緩衝區中要複製到紋理的資料的佈局的物件。結合
copySize,它定義了源緩衝區的區域。source可以包含以下屬性:buffer-
要從中複製資料的
GPUBuffer。 offset可選-
從
data開始到要複製的影像資料開始處的位元組偏移量。如果省略,offset預設為 0。 bytesPerRow可選-
一個數字,表示每個塊行(即,一個完整的 texel 塊行)和後續塊行之間的位元組步長。如果存在多個塊行(即,複製高度或深度大於一個塊),則此項是必需的。
rowsPerImage可選-
每張影像中的塊行數。
bytesPerRow×rowsPerImage將給出每張完整影像開始之間的位元組步幅。如果要複製多張影像,則需要此項。
destination-
一個定義要將資料寫入的紋理的物件。結合
copySize,它定義了目標紋理子資源區域。destination可以包含以下屬性: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物件。
copySize-
一個物件或陣列,指定複製資料的寬度、高度和深度/陣列層數。寬度值必須始終指定,而高度和深度/陣列層數是可選的,如果省略則預設為 1。
例如,您可以傳遞一個數組
[16, 16, 2],或等效的物件{ width: 16, height: 16, depthOrArrayLayers: 2 }。
返回值
無 (Undefined)。
驗證
呼叫 copyBufferToTexture() 時必須滿足以下條件,否則會生成 GPUValidationError,並且 GPUCommandEncoder 會失效。
對於 source:
source.bytesPerRow是 256 的倍數。source.buffer的GPUBuffer.usage包含GPUBufferUsage.COPY_SRC標誌。
對於 destination:
mipLevel小於GPUTexture.mipLevelCount。origin.x是GPUTexture.format的 texel 塊寬度的倍數。origin.y是GPUTexture.format的 texel 塊高度的倍數。- 如果
GPUTexture.format是 深度或模板格式,或者GPUTexture.sampleCount大於 1,則子資源大小等於size。 destination的GPUTexture.usage包含GPUTextureUsage.COPY_DST標誌。destination的GPUTexture.sampleCount為 1。destination.aspect指的是GPUTexture.format的單個方面。- 該方面根據 深度或模板格式 是有效的影像複製目標。
destination與copySize相容。
示例
commandEncoder.copyBufferToTexture(
{
buffer: sourceBuffer,
},
{
texture: destinationTexture,
},
{
width: 16,
height: 16,
depthOrArrayLayers: 2,
},
);
規範
| 規範 |
|---|
| WebGPU # dom-gpucommandencoder-copybuffertotexture |
瀏覽器相容性
載入中…