GPURenderPassEncoder: setPipeline() 方法

可用性有限

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

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

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

GPURenderPassEncoder 介面的 setPipeline() 方法用於設定後續渲染通道命令使用的 GPURenderPipeline

語法

js
setPipeline(pipeline)

引數

pipeline

用於後續渲染通道命令的 GPURenderPipeline

返回值

無 (Undefined)。

驗證

呼叫 setPipeline() 時必須滿足以下條件,否則將生成 GPUValidationError 並且 GPURenderPassEncoder 將失效。

示例

在我們 基本的渲染演示 中,透過 GPUCommandEncoder 記錄了多個命令。其中大多數命令源自透過 GPUCommandEncoder.beginRenderPass() 建立的 GPURenderPassEncodersetPipeline() 在適當的位置被呼叫以設定渲染管線。

js
// …

const renderPipeline = device.createRenderPipeline(pipelineDescriptor);

// Create GPUCommandEncoder to issue commands to the GPU
// Note: render pass descriptor, command encoder, etc. are destroyed after use, fresh one needed for each frame.
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 the triangle
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

// End the render pass
passEncoder.end();

// End frame by passing array of command buffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);

// …

規範

規範
WebGPU
# dom-gpurendercommandsmixin-setpipeline

瀏覽器相容性

另見