Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GPURenderPassEncoder: drawIndexed()-Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

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 definiert.

instanceCount Optional

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

firstIndex Optional

Eine Zahl, die den Versatz innerhalb des Indexpuffers in Indizes definiert, von dem aus gezeichnet werden soll. 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 definiert. Wenn weggelassen, ist firstInstance standardmäßig 0.

Rückgabewert

Keiner (undefined).

Beispiele

Im WebGPU-Beispiel Shadow Mapping wird drawIndexed() in zwei separaten Render-Passes in jedem Animationsframe verwendet: Einmal, um den Schattenpuffer zu füllen, und einmal, um die primäre Ansicht der Szene zu zeichnen. Untersuchen Sie die Codeauflistung des Beispiels 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

Spezifikation
WebGPU
# dom-gpurendercommandsmixin-drawindexed

Browser-Kompatibilität

Siehe auch