Тип буфера

Используйте следующий синтаксис для объявления переменной буфера.

Имятипа> буфера<;

Параметры

Буфера

Обязательный ключевое слово.

Тип

Один из скалярных, векторных и некоторых матричных типов 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 .

См. также раздел

Типы данных (DirectX HLSL)