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 GPURenderPassEncoder
— setIndexBuffer()
.
Syntax
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üroffset
0. size
Optional-
Eine Zahl, die die Größe in Bytes der Indexdaten in
buffer
darstellt. Wenn weggelassen, ist der Standardwert fürsize
dieGPUBuffer.size
desbuffers
-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
vonbuffer
enthält dasGPUBufferUsage.INDEX
-Flag. offset
+size
ist kleiner oder gleich derGPUBuffer.size
desbuffer
.offset
ist ein Vielfaches der Bytegröß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
Specification |
---|
WebGPU # dom-gpurendercommandsmixin-setindexbuffer |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API