Instance Method

drawPrimitives:indirectBuffer:indirectBufferOffset:

Encodes a command to render a number of instances of primitives using vertex data in contiguous array elements, starting from a base instance.

Required.

Declaration

- (void)drawPrimitives:(MTLPrimitiveType)primitiveType indirectBuffer:(id<MTLBuffer>)indirectBuffer indirectBufferOffset:(NSUInteger)indirectBufferOffset;

Parameters

primitiveType

The type of primitives that the vertices are assembled into.

indirectBuffer

A MTLBuffer object from which the device reads draw call arguments, as laid out in the MTLDrawPrimitivesIndirectArguments structure.

indirectBufferOffset

Byte offset within indirectBuffer to start reading arguments from. Must be a multiple of 4 bytes.

Discussion

The draw call arguments are read from a GPU buffer instead of being directly passed as method parameters via the CPU. Your app may avoid expensive latency costs by using indirect drawing.

When a draw command is encoded, any necessary references to rendering state or resources previously set on the encoder are recorded as part of the command. After encoding a command, you can safely change the encoding state to set up parameters needed to encode other commands.

See Also

Drawing Geometric Primitives and Tessellated Patches Indirectly

Specifying Drawing and Dispatch Arguments Indirectly

Use indirect commands if you don't know your draw or dispatch call arguments when you encode the command.

- drawIndexedPrimitives:indexType:indexBuffer:indexBufferOffset:indirectBuffer:indirectBufferOffset:

Encodes a command to render a number of instances of primitives using index data in contiguous array elements, starting from the base vertex of a base instance.

Required.

- drawPatches:patchIndexBuffer:patchIndexBufferOffset:indirectBuffer:indirectBufferOffset:

Encodes a command to render a number of instances of tessellated patches, using an indirect buffer.

Required.

- drawIndexedPatches:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:indirectBuffer:indirectBufferOffset:

Encodes a command to render a number of instances of tessellated patches, using a control point index buffer and an indirect buffer.

Required.

MTLDrawIndexedPrimitivesIndirectArguments

The data layout required for drawing indexed primitives via indirect buffer calls.

MTLDrawPrimitivesIndirectArguments

The data layout required for drawing primitives via indirect buffer calls.

MTLDrawPatchIndirectArguments

The data layout required for drawing patches via indirect buffer calls.