Входная и выходная структуры
16.1.2. Входная и выходная структуры
За объявлением глобальных переменных следует объявление двух специальных структур, которые мы будем называть входной (input) и выходной (output) структурами. Для вершинных шейдеров эти структуры описывают данные вершины, которые соответственно, получает и возвращает наш шейдер.
struct VS_INPUT { vector position : POSITION; };
struct VS_OUTPUT { vector position : POSITION; vector diffuse : COLOR; };
ПРИМЕЧАНИЕ
Входная и выходная структура пиксельного шейдера описывают данные пикселя.В рассматриваемом примере вершина, поступающая на вход шейдера содержит только данные о местоположении. Возвращаемая нашим шейдером вершина содержит сведения о местоположении а также данные цвета.
Синтаксическая конструкция с двоеточием применяется для указания способа использования переменной. Это похоже на поле настраиваемого формата вершин (FVF) в структуре данных вершины. Например, во входной структуре данных VS_INPUT, у нас есть член
vector position : POSITION;
Конструкция :POSITION означает, что переменная position типа vector используется для описания местоположения передаваемой шейдеру вершины. В качестве другого примера можно рассмотреть описание члена структуры VS_OUTPUT:
vector diffuse : COLOR;
Здесь : COLOR означает, что переменная diffuse типа vector применяется для описания цвета возвращаемой шейдером вершины. О доступных идентификаторах способов использования переменных, применяемых для вершинных и пиксельных шейдеров, мы поговорим в следующих двух главах.
ПРИМЕЧАНИЕ
С низкоуровневой точки зрения данная конструкция связывает переменную шейдера с регистром аппаратуры. Входные переменные связываются с входными регистрами, а выходные — с выходными. Например, член position структуры VS_INPUT связан с входным регистром местоположения вершины. Аналогично, член diffuse связан с выходным регистром цвета вершины.