# SetVertexBufferParams

> Sets the vertex buffer size and layout of the Mesh that Unity creates from the MeshData.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

## SetVertexBufferParams(int, VertexAttributeDescriptor\[])

Sets the vertex buffer size and layout of the Mesh that Unity creates from the `MeshData`.

```csharp
public void SetVertexBufferParams(int vertexCount, params VertexAttributeDescriptor[] attributes)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of vertices in the Mesh.**** (\[VertexAttributeDescriptor\[]]\(/engine/6000.6/script-reference/unityengine/rendering/vertexattributedescriptor)): Layout of the vertex data: which attributes are present, their data types and so on.

### Remarks

Use this function to set vertex buffer size and layout for newly created Mesh data (see [Mesh.AllocateWritableMeshData](/engine/6000.6/script-reference/unityengine/mesh/allocatewritablemeshdata.md)). For details, see [Mesh.SetVertexBufferParams](/engine/6000.6/script-reference/unityengine/mesh/setvertexbufferparams.md).

After you have set the vertex buffer parameters, you can write the vertices into the array returned by [Mesh.MeshData.GetVertexData](/engine/6000.6/script-reference/unityengine/mesh/meshdata/getvertexdata.md). If you call this method on a read-only `MeshData`, Unity throws an exception.

For details on how to specify a mesh attribute layout, refer to [VertexAttributeDescriptor](/engine/6000.6/script-reference/unityengine/rendering/vertexattributedescriptor.md).

The total byte size of each vertex attribute (format x dimension) must be a multiple of 4 bytes.

## SetVertexBufferParams(int, NativeArray\<VertexAttributeDescriptor>)

Sets the vertex buffer size and layout of the Mesh that Unity creates from the `MeshData`.

```csharp
public void SetVertexBufferParams(int vertexCount, NativeArray<VertexAttributeDescriptor> attributes)
```

### Parameters

**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of vertices in the Mesh.**** (\[NativeArray\<VertexAttributeDescriptor>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Layout of the vertex data: which attributes are present, their data types and so on.

### Remarks

Use this function to set vertex buffer size and layout for newly created Mesh data (see [Mesh.AllocateWritableMeshData](/engine/6000.6/script-reference/unityengine/mesh/allocatewritablemeshdata.md)). For details, see [Mesh.SetVertexBufferParams](/engine/6000.6/script-reference/unityengine/mesh/setvertexbufferparams.md).

After you have set the vertex buffer parameters, you can write the vertices into the array returned by [Mesh.MeshData.GetVertexData](/engine/6000.6/script-reference/unityengine/mesh/meshdata/getvertexdata.md). If you call this method on a read-only `MeshData`, Unity throws an exception.

For details on how to specify a mesh attribute layout, refer to [VertexAttributeDescriptor](/engine/6000.6/script-reference/unityengine/rendering/vertexattributedescriptor.md).

The total byte size of each vertex attribute (format x dimension) must be a multiple of 4 bytes.
