# ReadBuffer

> Read contents of a buffer from the context.

## Definition

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

## ReadBuffer\<T>(BufferSlice\<T>, NativeArray\<T>)

Read contents of a buffer from the context.

```csharp
public void ReadBuffer<T>(BufferSlice<T> src, NativeArray<T> dst) where T : struct
```

### Parameters

**** (\[BufferSlice\<T>]\(/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1)): The [BufferSlice](/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1.md) to read from.**** (\[NativeArray\<T>]\(/engine/6000.5/script-reference/unity/collections/nativearray1)): The array in the CPU memory that the contents of the buffer should be written to. The array must remain valid until the read operation is complete. Related content: [IDeviceContext.Wait](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/wait.md).

### Remarks

The memory that the [BufferSlice](/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1.md) points to can be transferred into a [NativeArray\<T>](/engine/6000.5/script-reference/unity/collections/nativearray1.md). On the reference context this method is equivalent to [ReferenceContext.GetNativeArray](/engine/6000.5/script-reference/unityengine/lighttransport/referencecontext/getnativearray.md) because they both finish the read immediately without the need for synchronization.

**Note:** [EventID](/engine/6000.5/script-reference/unityengine/lighttransport/eventid.md) is single-use. Once an [EventID](/engine/6000.5/script-reference/unityengine/lighttransport/eventid.md) has been passed to this function, it may not be passed to subsequent [IDeviceContext.WriteBuffer](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/writebuffer.md) or [IDeviceContext.ReadBuffer](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/readbuffer.md) calls. Doing so will result in undefined behavior.

## ReadBuffer\<T>(BufferSlice\<T>, NativeArray\<T>, EventID)

Read contents of a buffer from the context.

```csharp
public void ReadBuffer<T>(BufferSlice<T> src, NativeArray<T> dst, EventID id) where T : struct
```

### Parameters

**** (\[BufferSlice\<T>]\(/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1)): The [BufferSlice](/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1.md) to read from.**** (\[NativeArray\<T>]\(/engine/6000.5/script-reference/unity/collections/nativearray1)): The array in the CPU memory that the contents of the buffer should be written to. The array must remain valid until the read operation is complete. Related content: [IDeviceContext.Wait](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/wait.md).**** (\[EventID]\(/engine/6000.5/script-reference/unityengine/lighttransport/eventid)): The ID of the event to use to track completion of the read.

### Remarks

The memory that the [BufferSlice](/engine/6000.5/script-reference/unityengine/lighttransport/bufferslice1.md) points to can be transferred into a [NativeArray\<T>](/engine/6000.5/script-reference/unity/collections/nativearray1.md). On the reference context this method is equivalent to [ReferenceContext.GetNativeArray](/engine/6000.5/script-reference/unityengine/lighttransport/referencecontext/getnativearray.md) because they both finish the read immediately without the need for synchronization.

**Note:** [EventID](/engine/6000.5/script-reference/unityengine/lighttransport/eventid.md) is single-use. Once an [EventID](/engine/6000.5/script-reference/unityengine/lighttransport/eventid.md) has been passed to this function, it may not be passed to subsequent [IDeviceContext.WriteBuffer](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/writebuffer.md) or [IDeviceContext.ReadBuffer](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/readbuffer.md) calls. Doing so will result in undefined behavior.
