GPURenderBundleEncoder: setIndexBuffer()-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 setIndexBuffer()-Methode der GPURenderBundleEncoder-Schnittstelle setzt den aktuellen GPUBuffer, der Indexdaten für nachfolgende Zeichenbefehle bereitstellen wird.
Hinweis:
Diese Methode ist funktional identisch mit ihrem Äquivalent in GPURenderPassEncoder — setIndexBuffer().
Syntax
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 in
bufferenthaltenen Indexdaten definiert. Mögliche Werte sind:"uint16""uint32"
offsetOptional-
Eine Zahl, die den Offset in Bytes in
bufferdarstellt, an dem die Indexdaten beginnen. Wenn weggelassen, entsprichtoffsetstandardmäßig 0. sizeOptional-
Eine Zahl, die die Größe der in
bufferenthaltenen Indexdaten in Bytes darstellt. Wenn weggelassen, entsprichtsizestandardmäßig derbuffer-GrößeGPUBuffer.sizeminusoffset.
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-Primitiv-Topologie ("line-strip" oder "triangle-strip") spezifiziert, den Primitiv-Neustartwert. Der Primitiv-Neustartwert ist ein Indexwert, der angibt, dass ein neues Primitiv gestartet werden soll, anstatt den Streifen mit den vorher festgelegten Scheitelpunkten 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:
buffer'sGPUBuffer.usageenthält dasGPUBufferUsage.INDEX-Flag.offset+sizeist kleiner oder gleich derbuffer-GrößeGPUBuffer.size.offsetist ein Vielfaches der Byte-Größe vonindexFormat(2 für"uint16", 4 für"uint32").
Beispiele
// …
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
| Spezifikation |
|---|
| WebGPU> # dom-gpurendercommandsmixin-setindexbuffer> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API