Version: 2020.2
  • C#


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.



Switch to Manual
public void SetIndexBufferParams(int indexCount, Rendering.IndexFormat format);


indexCount Size of index buffer.
format Format of the indices.


Sets the index buffer size and format.

Note: This method is designed for advanced users aiming for maximum performance because it operates on the underlying mesh data structures that primarily work on raw index buffers, vertex buffers and mesh subset data. Using this method, Unity performs very little data validation, so you must ensure your data is valid.

In particular, you must ensure that the index buffer does not contain out-of-bounds indices, and that the SubMesh index range and bounds are updated via SetSubMesh.

For information about the difference between the simpler and more advanced methods of assigning data to a Mesh from script, see the notes on the Mesh page.

General usage pattern is:

var mesh = new Mesh();

// setup vertex buffer data mesh.vertices = ...;

// set index buffer mesh.SetIndexBufferParams(...); mesh.SetIndexBufferData(...);

// setup information about mesh subsets mesh.subMeshCount = ...; mesh.SetSubMesh(index, ...);

When you change the index buffer size or format, the subMeshCount reverts to one, and the index buffer data is uninitialized. To set values, use SetIndexBufferData.

Note that changing subMeshCount to a smaller value than it was previously resizes the index buffer to be smaller. The new index buffer size is set to SubMeshDescriptor.indexStart of the first removed sub-mesh.

See Also: SetIndexBufferData, subMeshCount, SetSubMesh, SetSubMeshes.