GPUDevice: createCommandEncoder() 方法

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

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

createCommandEncoder()GPUDevice 接口的方法,用于创建一个 GPUCommandEncoder,该对象用于编码要发送到 GPU 的命令。

语法

js
createCommandEncoder()
createCommandEncoder(descriptor)

参数

descriptor 可选

包含以下属性的对象

label 可选

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

返回值

一个 GPUCommandEncoder 对象实例。

示例

在我们的 基本渲染演示 中,多个命令通过 GPUCommandEncoder 记录,该对象通过 createCommandEncoder() 创建。

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

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

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

规范

规范
WebGPU
# dom-gpudevice-createcommandencoder

浏览器兼容性

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

另请参见