GPUCommandEncoder

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

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

WebGPU API 的 **GPUCommandEncoder** 接口表示一个命令编码器,用于编码要发送到 GPU 的命令。

GPUCommandEncoder 对象实例通过 GPUDevice.createCommandEncoder() 属性创建。

实例属性

label 实验性

一个字符串,提供一个标签,可用于标识对象,例如在 GPUError 消息或控制台警告中。

实例方法

beginComputePass() 实验性

开始编码计算传递,返回一个 GPUComputePassEncoder,可用于控制计算。

beginRenderPass() 实验性

开始编码渲染传递,返回一个 GPURenderPassEncoder,可用于控制渲染。

clearBuffer() 实验性

编码一个命令,用零填充 GPUBuffer 的一个区域。

copyBufferToBuffer() 实验性

编码一个命令,将数据从一个 GPUBuffer 复制到另一个 GPUBuffer

copyBufferToTexture() 实验性

编码一个命令,将数据从 GPUBuffer 复制到 GPUTexture

copyTextureToBuffer() 实验性

编码一个命令,将数据从 GPUTexture 复制到 GPUBuffer

copyTextureToTexture() 实验性

编码一个命令,将数据从一个 GPUTexture 复制到另一个 GPUTexture

finish() 实验性

完成在此 GPUCommandEncoder 上编码的命令序列的录制,返回相应的 GPUCommandBuffer

insertDebugMarker() 实验性

用标签标记一系列编码命令中的特定点。

popDebugGroup() 实验性

结束一个调试组,该组由 pushDebugGroup() 调用开始。

pushDebugGroup() 实验性

开始一个调试组,该组用指定的标签标记,并将包含所有后续编码的命令,直到调用 popDebugGroup() 方法。

resolveQuerySet() 实验性

编码一个命令,解析 GPUQuerySet,并将结果复制到指定的 GPUBuffer

writeTimestamp() 已弃用 实验性 非标准

编码一个命令,在 GPU 执行记录到同一排队 GPUCommandBuffer 中的先前命令后,将时间戳写入 GPUQuerySet

示例

在我们 的 基本渲染演示 中,几个命令通过 GPUCommandEncoder 记录。

js
// ...

// Create GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();

// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass

const renderPassDescriptor = {
  colorAttachments: [
    {
      clearValue: clearColor,
      loadOp: "clear",
      storeOp: "store",
      view: context.getCurrentTexture().createView(),
    },
  ],
};

const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Draw a triangle

passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

// End the render pass

passEncoder.end();

// ...

GPUCommandEncoder 编码的命令使用 GPUCommandEncoder.finish() 方法重新编码到 GPUCommandBuffer 中。然后,命令缓冲区通过 submit() 调用传递到队列中,准备由 GPU 处理。

js
device.queue.submit([commandEncoder.finish()]);

注意: 研究 WebGPU 示例 以查找更多命令编码示例。

规范

规范
WebGPU
# gpucommandencoder

浏览器兼容性

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

另请参阅