Тип буфера
Используйте следующий синтаксис для объявления переменной буфера.
Имятипа> буфера<; |
---|
Параметры
-
Буфера
-
Обязательный ключевое слово.
-
Тип
-
Один из скалярных, векторных и некоторых матричных типов HLSL. Буферную переменную можно объявить с помощью матрицы, если она помещается в 4 32-разрядных количествах. Таким образом, можно написать
Buffer<float2x2>
. НоBuffer<float4x4>
слишком большой, и компилятор создаст ошибку. -
Имя
-
Строка ASCII, однозначно идентифицирующая имя переменной.
Пример
Ниже приведен пример объявления буфера.
Buffer<float4> g_Buffer;
Данные считываются из буфера с помощью перегруженной версии встроенной функции Load HLSL, которая принимает один входной параметр (целочисленный индекс). Доступ к буферу осуществляется как к массиву элементов; Поэтому в этом примере считывается второй элемент .
float4 bufferData = g_Buffer.Load( 1 );
Используйте этап потокового вывода для вывода данных в буфер.
Комментарии
Для правильной загрузки из буфера требуется совместимое представление ресурсов буферного шейдера (SRV). При необходимости загрузка может выполнять преобразование типа, например буфер RGBA8_UNORM можно загрузить в переменную float4
. Для структур контанирования буфера используйте вместо него StructuredBuffer .