The intended usage of a GraphicsBuffer.
You must supply the intended usage (target) when creating a GraphicsBuffer; for example, pass
GraphicsBuffer.Target.Index for a buffer to be usable as a geometry index buffer.
Not all usages are supported on all platforms and devices. In particular, any target usage flags that are not Vertex, Index or Constant require compute shaders to be supported (see SystemInfo.supportsComputeShaders).
These values can be combined; for example, GraphicsBuffer.Target.Index | GraphicsBuffer.Target.Raw
creates a buffer that can be used both as an index buffer in a Graphics.DrawProcedural call, and as a "raw" byte address buffer in a compute shader.
DirectX 11 does not allow Index or Vertex buffers to also be Structured. For compute shader mesh data access with DirectX 11 compatibility, use Raw.
Additional resources: GraphicsBuffer class, GraphicsBuffer constructor, Mesh.vertexBufferTarget, Mesh.indexBufferTarget.
Vertex | GraphicsBuffer can be used as a vertex buffer. |
Index | GraphicsBuffer can be used as an index buffer. |
CopySource | GraphicsBuffer can be used as a source for CopyBuffer. |
CopyDestination | GraphicsBuffer can be used as a destination for CopyBuffer. |
Structured | GraphicsBuffer can be used as a structured buffer. |
Raw | GraphicsBuffer can be used as a raw byte-address buffer. |
Append | GraphicsBuffer can be used as an append-consume buffer. |
Counter | GraphicsBuffer with an internal counter. |
IndirectArguments | GraphicsBuffer can be used as an indirect argument buffer for indirect draws and dispatches. |
Constant | GraphicsBuffer can be used as a constant buffer (uniform buffer). |