Использование данных вершин
Рассмотрим следующее объявление вершины:
D3DVERTEXELEMENT9 decl[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0}, {0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 1}, {0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 2}, D3DDECL_END() };
Нам необходим способ указать соответствие между элементами объявления вершины и членами данных входной структуры вершинного шейдера. Это соответствие описывается во входной структуре путем указания для каждого члена данных конструкции вида : тип-использования[индекс-использования]. Эта запись идентифицирует элемент объявления вершины по его типу использования и индексу использования. Тот элемент данных вершины, который идентифицирован по указанным параметрам, будет отображен на член данных входной структуры. Например, для приведенного выше примера определение входной структуры может выглядеть так:
struct VS_INPUT { vector position : POSITION; vector normal : NORMAL0; vector faceNormal1 : NORMAL1; vector faceNormal2 : NORMAL2; };
ПРИМЕЧАНИЕ
Здесь элемент 0 в decl, идентифицируемый по типу использования POSITION и индексу использования 0, отображается на элемент входной структуры position. Элемент 1 в decl, идентифицируемый по типу использования NORMAL и индексу использования 0, отображается на элемент входной структуры normal. Элемент 2 в decl, идентифицируемый по типу использования NORMAL и индексу использования 1, отображается на элемент входной структуры faceNormal1. Элемент 3 в decl, идентифицируемый по типу использования NORMAL и индексу использования 2, отображается на элемент входной структуры faceNormal2.
Входная структура вершинного шейдера поддерживает следующие типы использования:
POSITION[n] — Местоположение.
BLENDWEIGHTS[n] — Веса смешивания.BLENDINDICES[n] — Индексы смешивания.
NORMAL[n] — Вектор нормали.
PSIZE[n] — Размер точки.
DIFFUSE[n] — Рассеиваемый цвет.
SPECULAR[n] — Отражаемый цвет.
TEXCOORD[n] — Координаты текстуры.
TANGENT[n] — Тангенциальный вектор.
BINORMAL[n] — Бинормальный вектор.
TESSFACTOR[n] — Мозаичный коэффициент.
Здесь n — это необязательное целое число в диапазоне [0, 15].
ПРИМЕЧАНИЕ
struct VS_OUTPUT { vector position : POSITION; vector diffuse : COLOR0; vector specular : COLOR1; };
Выходная структура вершинного шейдера поддерживает следующие типы использования:
POSITION — Местоположение.
PSIZE — Размер точки.
FOG — Значение смешивания тумана.
COLOR[n] — Цвет вершины. Обратите внимание, что можно возвращать несколько значений цветов. Для получения итогового цвета все эти цвета смешиваются вместе.
TEXCOORD[n] — Координтаы текстуры. Обратите внимание, что можно возвращать несколько координат текстуры.
Здесь n — это необязательное целое число в диапазоне [0, 15].