GPUCommandEncoder
WebGPU API 的 **GPUCommandEncoder
** 接口表示一个命令编码器,用于编码要发送到 GPU 的命令。
GPUCommandEncoder
对象实例通过 GPUDevice.createCommandEncoder()
属性创建。
实例属性
实例方法
beginComputePass()
实验性-
开始编码计算传递,返回一个
GPUComputePassEncoder
,可用于控制计算。 beginRenderPass()
实验性-
开始编码渲染传递,返回一个
GPURenderPassEncoder
,可用于控制渲染。 clearBuffer()
实验性-
编码一个命令,用零填充
GPUBuffer
的一个区域。 copyBufferToBuffer()
实验性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
记录。
// ...
// 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 处理。
device.queue.submit([commandEncoder.finish()]);
注意: 研究 WebGPU 示例 以查找更多命令编码示例。
规范
规范 |
---|
WebGPU # gpucommandencoder |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- The WebGPU API