# indexBufferTarget

> The intended target usage of the Mesh GPU index buffer.

## Definition

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

```csharp
public GraphicsBuffer.Target indexBufferTarget { get; set; }
```

### Remarks

By default, Mesh index buffers have [GraphicsBuffer.Target.Index](/engine/6000.5/script-reference/unityengine/graphicsbuffer/target/index.md) usage target. If you want to access the mesh index buffer from a compute shader, additional targets need to be requested, for example [GraphicsBuffer.Target.Raw](/engine/6000.5/script-reference/unityengine/graphicsbuffer/target/raw.md).

When setting this property to a new value, Unity destroys the existing buffer, and creates a new buffer with the specified target. In order for the new buffer to be correctly populated with data, the mesh data must reside on the CPU. You can check the [Mesh.isReadable](/engine/6000.5/script-reference/unityengine/mesh/isreadable.md) property to determine whether the mesh data is accessible on the CPU.

```csharp
using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    public Mesh mesh;
    public ComputeShader computeShader;
    void Start()
    {
        // Mark the index buffer as needing "Raw"
        // (ByteAddressBuffer, RWByteAddressBuffer in HLSL shaders)
        // access.
        mesh.indexBufferTarget |= GraphicsBuffer.Target.Raw;
        // Get the index buffer of the Mesh, and set it up
        // as a buffer parameter to a compute shader.
        var indexBuffer = mesh.GetIndexBuffer();
        computeShader.SetBuffer(0, "MeshIndexBuffer", indexBuffer);
        indexBuffer.Dispose();
    }
}
```

Additional Resources: [GraphicsBuffer.Target](/engine/6000.5/script-reference/unityengine/graphicsbuffer/target.md), [Mesh.GetIndexBuffer](/engine/6000.5/script-reference/unityengine/mesh/getindexbuffer.md), [Mesh.vertexBufferTarget](/engine/6000.5/script-reference/unityengine/mesh/vertexbuffertarget.md).
