GPURenderPassEncoder: Methode setIndexBuffer()

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

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 setIndexBuffer()-Methode des GPURenderPassEncoder-Interfaces legt den aktuellen GPUBuffer fest, der Indexdaten für nachfolgende Zeichenbefehle bereitstellen wird.

Syntax

js
setIndexBuffer(buffer, indexFormat, offset, size)

Parameter

buffer

Ein GPUBuffer, der den Puffer darstellt, der die Indexdaten enthält, die für nachfolgende Zeichenbefehle verwendet werden.

indexFormat

Ein aufgelisteter Wert, der das Format der im buffer enthaltenen Indexdaten definiert. Mögliche Werte sind:

  • "uint16"
  • "uint32"
offset Optional

Eine Zahl, die den Offset in Bytes in den buffer darstellt, wo die Indexdaten beginnen. Wenn weggelassen, ist der Standardwert von offset 0.

size Optional

Eine Zahl, die die Größe in Bytes der im buffer enthaltenen Indexdaten darstellt. Wenn weggelassen, entspricht size der GPUBuffer.size des buffers minus offset.

Hinweis zu indexFormat

indexFormat bestimmt sowohl den Datentyp der Indexwerte in einem Puffer als auch, wenn es mit einer Pipeline verwendet wird, die eine Streifen-Primitive-Topologie ("line-strip" oder "triangle-strip") angibt, den Primitive-Restart-Wert. Der Primitive-Restart-Wert ist ein Indexwert, der anzeigt, dass eine neue Primitive gestartet werden soll, anstatt den Streifen mit den vorher indizierten Scheitelpunkten fortzusetzen. Der Wert ist 0xFFFF für "uint16" oder 0xFFFFFFFF für "uint32".

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn setIndexBuffer() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und der GPURenderPassEncoder wird ungültig:

  • buffer's GPUBuffer.usage enthält das GPUBufferUsage.INDEX-Flag.
  • offset + size ist kleiner oder gleich der GPUBuffer.size des buffers.
  • offset ist ein Vielfaches der Bytegröße von indexFormat (2 für "uint16", 4 für "uint32").

Beispiele

Im WebGPU-Beispiel Shadow Mapping wird setIndexBuffer() in zwei separaten Render-Passagen in jedem Animationsframe verwendet, eine zum Zeichnen des Hauptmodells und eine, um seinen Schatten zu zeichnen. 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-setindexbuffer

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
setIndexBuffer
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

Siehe auch