GPURenderPassEncoder: drawIndexed() 方法
注意:此功能在 Web Workers 中可用。
GPURenderPassEncoder 接口的 drawIndexed() 方法根据通过 setVertexBuffer() 和 setIndexBuffer() 提供的顶点和索引缓冲区来绘制索引图元。
语法
js
drawIndexed(indexCount)
drawIndexed(indexCount, instanceCount)
drawIndexed(indexCount, instanceCount, firstIndex)
drawIndexed(indexCount, instanceCount, firstIndex, baseVertex)
drawIndexed(indexCount, instanceCount, firstIndex, baseVertex, firstInstance)
参数
indexCount-
一个定义要绘制的索引数量的数字。
instanceCount可选-
一个定义要绘制的实例数量的数字。如果省略,
instanceCount默认为 1。 firstIndex可选-
一个定义索引缓冲区中开始绘制的偏移量(以索引为单位)的数字。如果省略,
firstIndex默认为 0。 baseVertex可选-
在索引顶点缓冲区之前添加到每个索引值中的数字。如果省略,
baseVertex默认为 0。 firstInstance可选-
一个定义要绘制的第一个实例的数字。如果省略,
firstInstance默认为 0。
返回值
无 (Undefined)。
示例
在 WebGPU 示例 阴影映射 中,drawIndexed() 在每个动画帧的两个单独的渲染通道中使用,一个用于填充阴影缓冲区,另一个用于绘制场景的主要视图。请研究示例代码列表以了解完整上下文。
js
// …
const commandEncoder = device.createCommandEncoder();
{
const shadowPass = commandEncoder.beginRenderPass(shadowPassDescriptor);
shadowPass.setPipeline(shadowPipeline);
shadowPass.setBindGroup(0, sceneBindGroupForShadow);
shadowPass.setBindGroup(1, modelBindGroup);
shadowPass.setVertexBuffer(0, vertexBuffer);
shadowPass.setIndexBuffer(indexBuffer, "uint16");
shadowPass.drawIndexed(indexCount);
shadowPass.end();
}
{
const renderPass = commandEncoder.beginRenderPass(renderPassDescriptor);
renderPass.setPipeline(pipeline);
renderPass.setBindGroup(0, sceneBindGroupForRender);
renderPass.setBindGroup(1, modelBindGroup);
renderPass.setVertexBuffer(0, vertexBuffer);
renderPass.setIndexBuffer(indexBuffer, "uint16");
renderPass.drawIndexed(indexCount);
renderPass.end();
}
// …
规范
| 规范 |
|---|
| WebGPU # dom-gpurendercommandsmixin-drawindexed |
浏览器兼容性
加载中…