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 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 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 vonoffset
0. size
Optional-
Eine Zahl, die die Größe in Bytes der im
buffer
enthaltenen Indexdaten darstellt. Wenn ausgelassen, entsprichtsize
der Differenz zwischen derGPUBuffer.size
desbuffer
undoffset
.
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
desbuffer
enthält dasGPUBufferUsage.INDEX
-Flag. offset
+size
ist kleiner oder gleich derGPUBuffer.size
desbuffer
.offset
ist 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
Specification |
---|
WebGPU # dom-gpurendercommandsmixin-setindexbuffer |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API