# CopyCount(ComputeBuffer, ComputeBuffer, int)

> Copy counter value of append/consume buffer into another buffer.

## Definition

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

```csharp
public static void CopyCount(ComputeBuffer src, ComputeBuffer dst, int dstOffsetBytes)
```

### Parameters

**** (\[ComputeBuffer]\(/engine/6000.7/script-reference/unityengine/computebuffer)): Append/consume buffer to copy the counter from.**** (\[ComputeBuffer]\(/engine/6000.7/script-reference/unityengine/computebuffer)): A buffer to copy the counter to.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Target byte offset in `dst`.

### Remarks

Append/consume and counter buffers (see [ComputeBufferType.Append](/engine/6000.7/script-reference/unityengine/computebuffertype/append.md), [ComputeBufferType.Counter](/engine/6000.7/script-reference/unityengine/computebuffertype/counter.md)) keep track of the number of elements in them with a special counter variable. CopyCount takes a buffer as `src`, and copies its counter value into `dst` buffer at given byte offset.

This is most commonly used in conjunction with [Graphics.DrawProceduralIndirect](/engine/6000.7/script-reference/unityengine/graphics/drawproceduralindirect.md), to render arbitrary number of primitives without reading their count back to the CPU.

On DX11 there is a restriction on the `dst` buffer - it must have been created with [ComputeBufferType.Raw](/engine/6000.7/script-reference/unityengine/computebuffertype/raw.md) or [ComputeBufferType.IndirectArguments](/engine/6000.7/script-reference/unityengine/computebuffertype/indirectarguments.md) type. On other platforms `dst` can be any type.

Additional Resources: [ComputeBuffer.SetCounterValue](/engine/6000.7/script-reference/unityengine/computebuffer/setcountervalue.md).
