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 |
浏览器兼容性
加载中…