Unity 6.3
0 онлайн 91 гостей 3 в системе
Вход

RadeonRaysContext.WriteBuffer

Declaration

public void WriteBuffer(BufferSlice<T> dst, NativeArray<T> src);
public void WriteBuffer(BufferSlice<T> dst, NativeArray<T> src, LightTransport.EventID id);

Параметры

Параметр Описание
дст Буферный сегмент для записи.
сердце Массив в памяти CPU, который должен быть записан в буфер. Массив должен оставаться действительным до завершения операции записи.
Идентификатор ID события, которое будет использоваться для отслеживания завершения записи.

Описание

Запись данных в буфер памяти, выделенный контекстом.

Это асинхронная операция. Передайте EventID, созданный с помощью IDeviceContext.CreateEvent для отслеживания состояния завершения, если это необходимо. Метод WriteBuffer возвращается сразу после очереди команды в контексте.

Примечание: EventID одноразовый. После того, как EventID был передан этой функции, он не может быть передан последующим вызовам IDeviceContext.WriteBuffer или IDeviceContext.ReadBuffer. Это приведет к неопределенному поведению.

using Unity.Collections;
using UnityEngine;
using UnityEngine.LightTransport;

IDeviceContext ctx = new RadeonRaysContext(); ctx.Initialize(); uint length = 8; var input = new NativeArray<byte>((int)length, Allocator.Persistent); for (int i = 0; i < length; ++i) input[i] = (byte)i; BufferID id = ctx.CreateBuffer(8); var writeEvent = ctx.CreateEvent(); ctx.WriteBuffer(id.Slice<byte>(), input, writeEvent); bool flushOk = ctx.Flush(); Assert.IsTrue(flushOk); bool eventOk = ctx.Wait(writeEvent); Assert.IsTrue(eventOk); ctx.DestroyEvent(writeEvent);

// The contents of the input buffer has now been transferred into the buffer allocated by the context.

input.Dispose(); ctx.DestroyBuffer(id); ctx.Dispose();