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

ComputeBuffer.BeginWrite

Declaration

public NativeArray<T> BeginWrite(int computeBufferStartIndex, int count);

Параметры

Параметр Описание
computeBufferStartIndex Смещение в количестве элементов, к которым будет произведена операция записи
Количество Максимальное число элементов, которые будут записаны

Возвращаемое значение

NativeArray<T> А NativeArray счета размера

Описание

Начинает операцию записи в буфер

Используйте этот метод для начала операции записи в буфер. Использование этого метода приводит к меньшему количеству копий памяти, чем использование ComputeBuffer.SetData, и, следовательно, является более быстрым. По причинам совместимости, вы можете вызвать этот метод только на буферах, где ComputeBufferMode является ComputeBufferMode.SubUpdates. Если вы вызовете этот метод на буфере с другим ComputeBufferMode, Unity вызовет исключение.

Возвращаемый основной массив указывает непосредственно на память GPU, если это возможно. Если невозможно записать непосредственно в память GPU, возвращаемый основной массив указывает на временный буфер в памяти CPU. Можно ли записать непосредственно в память GPU зависит от многих факторов, включая режим буфера, активное графическое устройство и аппаратную поддержку.

Из-за этого, содержимое возвращаемого массива не гарантированно отражает содержимое данных бокового буфера GPU. Поэтому вы должны использовать возвращаемый массив только для записи, а не для чтения.

После записи в массив вызовите ComputeBuffer.EndWrite, чтобы завершить операцию и пометить возвращенный NativeArray как неиспользуемый.

Производительность этого метода будет зависеть от того, может ли он записывать непосредственно в память GPU или нет, но он всегда приведет к меньшему количеству копий памяти, чем использование SetData.

Данные, записанные в возвращенный основной массив, должны соответствовать правилам расположения данных используемой графики API. См. Вычисление шейдеров для информации о межплатформенной совместимости.

Дополнительные ресурсы: ComputeBuffer.SetData, ComputeBuffer.EndWrite