GPURenderBundleEncoder: setIndexBuffer() method
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The setIndexBuffer()
method of the
GPURenderBundleEncoder
interface sets the current GPUBuffer
that will provide index data for subsequent drawing commands.
Note: This method is functionally identical to its equivalent on GPURenderPassEncoder
— setIndexBuffer()
.
Syntax
setIndexBuffer(buffer, indexFormat, offset, size)
Parameters
buffer
-
A
GPUBuffer
representing the buffer containing the index data to use for subsequent drawing commands. indexFormat
-
An enumerated value that defines the format of the index data contained in
buffer
. Possible values are:"uint16"
"uint32"
offset
Optional-
A number representing the offset, in bytes, into
buffer
where the index data begins. If omitted,offset
defaults to 0. size
Optional-
A number representing the size, in bytes, of the index data contained in
buffer
. If omitted,size
defaults to thebuffer
'sGPUBuffer.size
-offset
.
Note on indexFormat
indexFormat
determines both the data type of index values in a buffer and, when used with a pipeline that specifies a strip primitive topology ("line-strip"
or "triangle-strip"
), also determines the primitive restart value. The primitive restart value is an index value indicating that a new primitive should be started rather than continuing to construct the strip with the prior indexed vertices. The value is 0xFFFF
for "uint16"
, or 0xFFFFFFFF
for "uint32"
.
Return value
None (Undefined
).
Validation
The following criteria must be met when calling setIndexBuffer()
, otherwise a GPUValidationError
is generated and the GPURenderBundleEncoder
becomes invalid:
buffer
'sGPUBuffer.usage
contains theGPUBufferUsage.INDEX
flag.offset
+size
is less than or equal to thebuffer
'sGPUBuffer.size
.offset
is a multiple ofindexFormat
's byte size (2 for"uint16"
, 4 for"uint32"
).
Examples
// ...
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();
// ...
Specifications
Specification |
---|
WebGPU # dom-gpurendercommandsmixin-setindexbuffer |
Browser compatibility
BCD tables only load in the browser
See also
- The WebGPU API