Instance Method


Initializes a named submesh with a specific topology.


- (instancetype)initWithName:(NSString *)name indexBuffer:(id<MDLMeshBuffer>)indexBuffer indexCount:(NSUInteger)indexCount indexType:(MDLIndexBitDepth)indexType geometryType:(MDLGeometryType)geometryType material:(MDLMaterial *)material topology:(MDLSubmeshTopology *)topology;



A descriptive name for the submesh. This property is not used in rendering, but can be useful in debugging.


An object that provides index data for the submesh.


The number of indices in the index buffer.


The data type of each index in the index buffer.


The type of geometric primitives described by the index buffer.


A description of the intended surface appearance for rendering the submesh.


An object describing the arrangement of geometric primitives in the index buffer.

Return Value

A new submesh object.


Typically, a submesh is imported from an asset file as a member of a MDLMesh object, but you can also use this method to create a submesh programmatically.

Use this method when the index buffer from which you’re creating a submesh does not contain a uniform array of geometric primitives. Pass MDLGeometryTypeVariableTopology for the geometryType parameter, and provide an MDLSubmeshTopology object for the topology parameter to describe how the points in the index buffer combine to produce the submesh’s shape. Otherwise, this method is equivalent to the initWithName:indexBuffer:indexCount:indexType:geometryType:material: method.

See Also

Creating a Submesh

- initWithIndexBuffer:indexCount:indexType:geometryType:material:

Initializes a submesh with an index buffer and the specified properties.

- initWithName:indexBuffer:indexCount:indexType:geometryType:material:

Initializes a named submesh with an index buffer and the specified properties.

- initWithMDLSubmesh:indexType:geometryType:

Initializes a submesh by copying or converting another submesh.