GPUCommandEncoder
注意:此功能在 Web Workers 中可用。
GPUCommandEncoder 介面是 WebGPU API 的一部分,它代表一個命令編碼器,用於收集要傳送到 GPU 的一系列 GPU 命令。
GPUCommandEncoder 物件例項透過 GPUDevice.createCommandEncoder() 屬性建立。
例項屬性
例項方法
beginComputePass()-
開始編碼一個計算通道,返回一個
GPUComputePassEncoder,可用於控制計算。 beginRenderPass()-
開始編碼一個渲染通道,返回一個
GPURenderPassEncoder,可用於控制渲染。 clearBuffer()-
編碼一個命令,將
GPUBuffer的一個區域用零填充。 copyBufferToBuffer()-
編碼一個命令,將資料從一個
GPUBuffer複製到另一個。 copyBufferToTexture()-
編碼一個命令,將資料從
GPUBuffer複製到GPUTexture。 copyTextureToBuffer()-
編碼一個命令,將資料從
GPUTexture複製到GPUBuffer。 copyTextureToTexture()-
編碼一個命令,將資料從一個
GPUTexture複製到另一個。 finish()-
完成在此
GPUCommandEncoder上編碼的命令序列的記錄,並返回一個相應的GPUCommandBuffer。 insertDebugMarker()-
使用標籤在一系列已編碼命令中的特定點進行標記。
popDebugGroup()-
結束一個除錯組,該除錯組由
pushDebugGroup()呼叫開始。 pushDebugGroup()-
開始一個除錯組,該除錯組用指定的標籤標記,幷包含所有後續編碼的命令,直到呼叫
popDebugGroup()方法為止。 resolveQuerySet()-
編碼一個命令,該命令解析一個
GPUQuerySet,並將結果複製到一個指定的GPUBuffer中。 writeTimestamp()非標準 已棄用-
編碼一個命令,該命令在同一佇列的
GPUCommandBuffer中先前記錄的命令已被 GPU 執行後,將一個時間戳寫入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 |
瀏覽器相容性
載入中…