GPURenderPassEncoder: drawIndexed()-Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die drawIndexed()-Methode der GPURenderPassEncoder-Schnittstelle zeichnet indizierte Primitiven basierend auf den durch setVertexBuffer() und setIndexBuffer() bereitgestellten Vertex- und Indexpuffern.

Syntax

js
drawIndexed(indexCount)
drawIndexed(indexCount, instanceCount)
drawIndexed(indexCount, instanceCount, firstIndex)
drawIndexed(indexCount, instanceCount, firstIndex, baseVertex)
drawIndexed(indexCount, instanceCount, firstIndex, baseVertex, firstInstance)

Parameter

indexCount

Eine Zahl, die die Anzahl der zu zeichnenden Indizes festlegt.

instanceCount Optional

Eine Zahl, die die Anzahl der zu zeichnenden Instanzen festlegt. Wenn weggelassen, ist instanceCount standardmäßig 1.

firstIndex Optional

Eine Zahl, die den Offset in den Indexpuffer in Indizes angibt, ab dem das Zeichnen beginnt. Wenn weggelassen, ist firstIndex standardmäßig 0.

baseVertex Optional

Eine Zahl, die zu jedem Indexwert hinzugefügt wird, bevor in die Vertexpuffer indiziert wird. Wenn weggelassen, ist baseVertex standardmäßig 0.

firstInstance Optional

Eine Zahl, die die erste zu zeichnende Instanz festlegt. Wenn weggelassen, ist firstInstance standardmäßig 0.

Rückgabewert

Kein Wert (Undefined).

Beispiele

Im WebGPU-Samples-Beispiel Shadow Mapping wird drawIndexed() in zwei separaten Renderdurchläufen in jedem Animationsframe verwendet, einer zum Befüllen des Schattenpuffers und einer zum Zeichnen der Hauptansicht der Szene. Untersuchen Sie die Beispielcode-Auflistung für den vollständigen Kontext.

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();
}

// …

Spezifikationen

Specification
WebGPU
# dom-gpurendercommandsmixin-drawindexed

Browser-Kompatibilität

Siehe auch