# DrawMesh

> Records a draw command with the provided triangle-list indexed mesh.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.3/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

## DrawMesh(NativeSlice\<Vertex>, NativeSlice\<ushort>, Texture)

Records a draw command with the provided triangle-list indexed mesh.

```csharp
public void DrawMesh(NativeSlice<Vertex> vertices, NativeSlice<ushort> indices, Texture texture = null)
```

### Parameters

**** (\[NativeSlice\<Vertex>]\(/engine/6000.3/script-reference/unity/collections/nativeslice1)): The vertices to be drawn. All referenced vertices must be initialized.**** (\[NativeSlice\<ushort>]\(/engine/6000.3/script-reference/unity/collections/nativeslice1)): The triangle list indices. Must be a multiple of 3. All indices must be initialized.**** (\[Texture]\(/engine/6000.3/script-reference/unityengine/texture)): An optional texture to be applied on the triangles. Pass null to rely on vertex colors only.

### Remarks

You can generate the mesh content later because the renderer doesn't immediately process the mesh. The mesh content must be fully generated before you return from GenerateVisualContent, unless you call [MeshGenerationContext.AddMeshGenerationJob](/engine/6000.3/script-reference/unityengine/uielements/meshgenerationcontext/addmeshgenerationjob.md).

The renderer will process the mesh when the following conditions are met:

* GenerateVisualContent has been called on all dirty VisualElements
* All registered generation dependencies have completed
* All deferred generation callbacks have been issued

## DrawMesh(NativeSlice\<Vertex>, NativeSlice\<ushort>, Texture, TextureOptions)

Records a draw command with the provided triangle-list indexed mesh.

```csharp
public void DrawMesh(NativeSlice<Vertex> vertices, NativeSlice<ushort> indices, Texture texture, TextureOptions textureOptions)
```

### Parameters

**** (\[NativeSlice\<Vertex>]\(/engine/6000.3/script-reference/unity/collections/nativeslice1)): The vertices to be drawn. All referenced vertices must be initialized.**** (\[NativeSlice\<ushort>]\(/engine/6000.3/script-reference/unity/collections/nativeslice1)): The triangle list indices. Must be a multiple of 3. All indices must be initialized.**** (\[Texture]\(/engine/6000.3/script-reference/unityengine/texture)): An optional texture to be applied on the triangles. Pass null to rely on vertex colors only.**** (\[TextureOptions]\(/engine/6000.3/script-reference/unityengine/uielements/textureoptions)): Flags that apply to the provided texture for this draw call.

### Remarks

You can generate the mesh content later because the renderer doesn't immediately process the mesh. The mesh content must be fully generated before you return from GenerateVisualContent, unless you call [MeshGenerationContext.AddMeshGenerationJob](/engine/6000.3/script-reference/unityengine/uielements/meshgenerationcontext/addmeshgenerationjob.md).

The renderer will process the mesh when the following conditions are met:

* GenerateVisualContent has been called on all dirty VisualElements
* All registered generation dependencies have completed
* All deferred generation callbacks have been issued
