GPURenderBundleEncoder: setPipeline() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

安全上下文:此功能仅在 安全上下文(HTTPS)中可用,且仅在部分或全部 支持的浏览器 中可用。

setPipeline() 方法是 GPURenderBundleEncoder 接口的一部分,用于设置后续渲染包命令要使用的 GPURenderPipeline

注意:此方法在功能上与其在 GPURenderPassEncoder 上的等效方法 — setPipeline() 完全相同。

语法

js
setPipeline(pipeline)

参数

pipeline

用于后续渲染包命令的 GPURenderPipeline

返回值

无 (Undefined).

验证

调用setPipeline()时必须满足以下条件,否则会生成 GPUValidationError,并且 GPURenderBundleEncoder 将变为无效状态。

示例

js
function recordRenderPass(passEncoder) {
  if (settings.dynamicOffsets) {
    passEncoder.setPipeline(dynamicPipeline);
  } else {
    passEncoder.setPipeline(pipeline);
  }
  passEncoder.setVertexBuffer(0, vertexBuffer);
  passEncoder.setBindGroup(0, timeBindGroup);
  const dynamicOffsets = [0];
  for (let i = 0; i < numTriangles; ++i) {
    if (settings.dynamicOffsets) {
      dynamicOffsets[0] = i * alignedUniformBytes;
      passEncoder.setBindGroup(1, dynamicBindGroup, dynamicOffsets);
    } else {
      passEncoder.setBindGroup(1, bindGroups[i]);
    }
    passEncoder.draw(3, 1, 0, 0);
  }
}

以上代码片段取自 WebGPU 示例 Animometer 示例

规范

规范
WebGPU
# dom-gpurendercommandsmixin-setpipeline

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅