GPURenderBundleEncoder: Methode setIndexBuffer()

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

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

Syntax

js
setIndexBuffer(buffer, indexFormat, offset, size)

Parameter

buffer

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

indexFormat

Ein enumerierter 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 innerhalb des buffer darstellt, an dem die Indexdaten beginnen. Wenn ausgelassen, ist der Standardwert von offset 0.

size Optional

Eine Zahl, die die Größe in Bytes der im buffer enthaltenen Indexdaten darstellt. Wenn ausgelassen, entspricht size der Differenz zwischen der GPUBuffer.size des buffer und 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“) spezifiziert, den Primitive-Neustartwert. Der Primitive-Neustartwert ist ein Indexwert, der angibt, dass ein neues Primitive gestartet werden sollte, anstatt den Streifen mit den zuvor indizierten Vertizes weiter zu konstruieren. 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:

  • Das GPUBuffer.usage des buffer enthält das GPUBufferUsage.INDEX-Flag.
  • offset + size ist kleiner oder gleich der GPUBuffer.size des buffer.
  • offset ist ein Vielfaches der Byte-Größ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