Введение в программирование трехмерных игр с DX9

       

Входная и выходная структуры


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 связан с выходным регистром цвета вершины.

Содержание раздела