GPUCommandEncoder

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUCommandEncoder 介面是 WebGPU API 的一部分,它代表一個命令編碼器,用於收集要傳送到 GPU 的一系列 GPU 命令。

GPUCommandEncoder 物件例項透過 GPUDevice.createCommandEncoder() 屬性建立。

例項屬性

label

一個字串,提供可用於識別物件的標籤,例如在 GPUError 訊息或控制檯警告中。

例項方法

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 記錄了多個命令。

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

瀏覽器相容性

另見