Material.SetConstantBuffer
Declaration
public void SetConstantBuffer(string name, ComputeBuffer value, int offset, int size);public void SetConstantBuffer(int nameID, ComputeBuffer value, int offset, int size);public void SetConstantBuffer(string name, GraphicsBuffer value, int offset, int size);public void SetConstantBuffer(int nameID, GraphicsBuffer value, int offset, int size);Параметры
| Параметр | Описание |
|---|---|
| имя | Имя переопределяемого константного буфера. |
| значение | ComputeBuffer, значениями которого нужно переопределить константный буфер, либо null, чтобы снять привязку. |
| офсет | Смещение в байтах от начала буфера для привязки. Должно быть кратным SystemInfo.constantBufferOffsetAlignmentили 0, если это значение равно 0. |
| размер | Число байт для привязки. |
| nameID | Идентификатор свойства шейдера для переопределяемого константного буфера. |
Описание
Устанавливает ComputeBuffer или GraphicsBuffer в качестве именованного постоянного буфера для материала.
С помощью этого метода все параметры в константном буфере шейдера переопределяются содержимым ComputeBuffer или GraphicsBuffer.
Для использования этого метода должны быть выполнены следующие условия:
- Флаг ComputeBuffer или GraphicsBuffer должен быть создан с соответствующим флагом ComputeBufferType.Constant или GraphicsBuffer.Target.Constant.
- Все варианты шейдеров для этого Материала должны использовать одинаковую расстановку постоянных буферов для данного постоянного буфера.
- Расположение данных в постоянном буфере должно точно соответствовать данным, представленным в буфере.
Расположение данных в буфере константы может отличаться в зависимости от графики API. Это означает, что SetConstantBuffer может перезаписать данные или установить переменные на неправильные значения. См. Запись шейдеров для разных графиков APIs для более подробной информации.
После того, как эта функция была вызвана с ненулевой ComputeBuffer или GraphicsBuffer, вы больше не сможете вручную устанавливать значение переменной внутри перезаписываемого буфера константы. Вызовы Material.SetFloat и аналогичных функций, в которых название свойства ID указывает на переменную внутри перезаписываемого буфера константы, не будут иметь никакого эффекта.