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 |
瀏覽器相容性
載入中…