GPURenderBundleEncoder: setIndexBuffer()-Methode

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 der GPURenderBundleEncoder-Schnittstelle legt den aktuellen GPUBuffer fest, der Indexdaten für nachfolgende Zeichnungsbefehle bereitstellt.

Hinweis: Diese Methode ist funktional identisch mit ihrem Äquivalent auf GPURenderPassEncodersetIndexBuffer().

Syntax

js
setIndexBuffer(buffer, indexFormat, offset, size)

Parameter

buffer

Ein GPUBuffer, der den Puffer repräsentiert, der die Indexdaten enthält, die für nachfolgende Zeichnungsbefehle verwendet werden sollen.

indexFormat

Ein aufgezählter Wert, der das Format der Indexdaten in buffer definiert. Mögliche Werte sind:

  • "uint16"
  • "uint32"
offset Optional

Eine Zahl, die den Offset in Bytes in buffer darstellt, ab dem die Indexdaten beginnen. Wenn weggelassen, ist der Standardwert für offset 0.

size Optional

Eine Zahl, die die Größe in Bytes der Indexdaten in buffer darstellt. Wenn weggelassen, ist der Standardwert für size die GPUBuffer.size des buffers - 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 strip primitive topology spezifiziert ("line-strip" oder "triangle-strip"), den ursprünglichen Restartwert des Primitives. Der ursprüngliche Restartwert ist ein Indexwert, der angibt, dass ein neues Primiv gestartet werden soll, anstatt das Streifen mit den vorherigen indizierten Vertizes 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 GPURenderBundleEncoder wird ungültig:

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

Beispiele

js
// …

const bundleEncoder = device.createRenderBundleEncoder(descriptor);

bundleEncoder.setPipeline(pipeline);
bundleEncoder.setBindGroup(0, sceneBindGroupForRender);
bundleEncoder.setBindGroup(1, modelBindGroup);
bundleEncoder.setVertexBuffer(0, vertexBuffer);
bundleEncoder.setIndexBuffer(indexBuffer, "uint16");
bundleEncoder.drawIndexed(indexCount);

const renderBundle = bundleEncoder.finish();

// …

Spezifikationen

Specification
WebGPU
# dom-gpurendercommandsmixin-setindexbuffer

Browser-Kompatibilität

Siehe auch