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