GPUDevice:createCommandEncoder() 方法

可用性有限

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

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

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

GPUDevice 介面的 createCommandEncoder() 方法會建立一個 GPUCommandEncoder,該物件用於編碼要提交給 GPU 的命令。

語法

js
createCommandEncoder()
createCommandEncoder(descriptor)

引數

descriptor 可選

包含以下屬性的物件:

label 可選

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

返回值

一個 GPUCommandEncoder 物件例項。

示例

在我們 基本的渲染演示中,透過 createCommandEncoder() 建立的 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.finish() 方法,GPUCommandEncoder 編碼的命令會被記錄到一個 GPUCommandBuffer 中。然後,該命令緩衝區會透過 submit() 呼叫傳遞到佇列,準備由 GPU 處理。

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

注意: 請學習 WebGPU 示例以查詢更多命令編碼示例。

規範

規範
WebGPU
# dom-gpudevice-createcommandencoder

瀏覽器相容性

另見