GPURenderBundleEncoder: setPipeline() 方法
注意:此功能在 Web Workers 中可用。
GPURenderBundleEncoder 接口的 setPipeline() 方法用于设置后续渲染打包命令使用的 GPURenderPipeline。
注意:此方法在功能上与其在 GPURenderPassEncoder 上的对应方法——setPipeline()——是相同的。
语法
js
setPipeline(pipeline)
参数
pipeline-
用于后续渲染打包命令的
GPURenderPipeline。
返回值
无 (Undefined)。
验证
调用 setPipeline() 时必须满足以下条件,否则将生成 GPUValidationError,并且 GPURenderBundleEncoder 将失效。
- 如果
GPURenderPipeline写入深度/模板附件的深度分量,则depthReadOnly(如原始GPUCommandEncoder.beginRenderPass()调用描述符中所指定)必须为true。 - 如果
GPURenderPipeline写入深度/模板附件的模板分量,则stencilReadOnly(如原始GPUCommandEncoder.beginRenderPass()调用描述符中所指定)必须为true。
示例
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 |
浏览器兼容性
加载中…