GPURenderBundleEncoder: draw() 方法
注意:此功能在 Web Workers 中可用。
GPURenderBundleEncoder 接口的 draw() 方法会根据 setVertexBuffer() 提供的顶点缓冲区来绘制图元。
注意: 此方法在功能上与其在 GPURenderPassEncoder 上的对应方法 — draw() — 完全相同。
语法
js
draw(vertexCount)
draw(vertexCount, instanceCount)
draw(vertexCount, instanceCount, firstVertex)
draw(vertexCount, instanceCount, firstVertex, firstInstance)
参数
vertexCount-
一个定义要绘制的顶点数的数字。
instanceCount可选-
一个定义要绘制的实例数量的数字。如果省略,
instanceCount默认为 1。 firstVertex可选-
一个数字,定义从顶点缓冲区开始绘制的偏移量(以顶点为单位)。如果省略,
firstVertex默认为 0。 firstInstance可选-
一个定义要绘制的第一个实例的数字。如果省略,
firstInstance默认为 0。
返回值
无 (Undefined)。
示例
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-draw |
浏览器兼容性
加载中…