GPUCommandEncoder:copyTextureToTexture() 方法

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细检查 浏览器兼容性表

安全上下文: 此功能仅在 安全上下文 (HTTPS) 中可用,在一些或所有 支持的浏览器 中可用。

GPUCommandEncoder 接口的 copyTextureToTexture() 方法编码一个将数据从一个 GPUTexture 复制到另一个的命令。

语法

js
copyTextureToTexture(source, destination, copySize)

参数

source

一个对象(参见 复制纹理对象结构),定义了要从中复制数据的纹理。结合 copySize,它定义了源纹理子资源的区域。

destination

一个对象(参见 复制纹理对象结构),定义了要写入数据的纹理。结合 copySize,它定义了目标纹理子资源的区域。

copySize

一个对象或数组,指定复制数据的宽度、高度和深度/数组层数。必须始终指定宽度值,而高度和深度/数组层数值是可选的,如果省略将默认值为 1。

以下是一个示例 copySize 数组

js
[16, 16, 2];

等效的对象如下所示

js
{
  width: 16,
  height: 16,
  depthOrArrayLayers: 2
}

复制纹理对象结构

复制纹理对象具有以下结构

aspect 可选

一个枚举值,定义了要从中/向其中复制数据的纹理的哪些方面。可能的值是

"all"

将从/向其中复制纹理格式的所有可用方面,这可能意味着所有或任何颜色、深度和模板,具体取决于您正在处理的格式类型。

"depth-only"

将从/向其中复制 深度或模板格式 的仅深度方面。

"stencil-only"

将从/向其中复制深度或模板格式的仅模板方面。

如果省略,aspect 将取值为 "all"

mipLevel 可选

一个数字,表示要从中/向其中复制数据的纹理的 mip 映射级别。如果省略,mipLevel 默认值为 0。

origin 可选

一个对象或数组,指定复制/目标的原点 - 要从中/向其中复制数据的纹理区域的最小角。与 size 结合,它定义了要从中/向其中复制的区域的完整范围。如果省略 origin 的任何或全部,则 xyz 值将默认值为 0。

以下是一个示例数组

js
[0, 0, 0];

等效的对象如下所示

js
{
  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

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅