// ,.. до gl_MultiTexCoordN-l. где N = gi_MaxTextureCoords attribute float gl_FogCoord: Подробнее о передаче атрибутов вершинному шейдеру с помощью API-языка тендеров OpenGL говорится в разделе 7.6.

И стандартные, и произвольные атрибуты - часть состояния OpenGL. Это означает, что однажды установленные значения сохраняются в дальнейшем. Приложение может установить любой атрибут и рассчитывать, что OpenGL сохранит его (за исключением координат вершины, см. раздел 7.6). Существует, однако, ограничение на количество атрибутов вершины, которые может использовать вершинный шейдер. Обычно разрешенное количество атрибутов меньше, чем общее количество стандартных и произвольных атрибутов. Получить это максимальное количество атрибутов, обычно зависящее от конкретной реализации OpenGL, можно с помощью функции gl Get, задав константу GL_MAX_VERTEX_ATTR1BS_ARB. Тем не менее каждая реализация OpenGL обязана поддерживать не меньше 16 вершинных атрибутов.

4.1. Вершинный процессор

Чтобы при установке атрибутов можно было отделить атрибуты одной вершины от атрибутов другой, используют специальный атрибут gl _Vertex. Если приложение устанавливает этот атрибут командой gl Vertex или одной из команд для массива вершин, значит, определение вершины закончилось и все последующие атрибуты будут устанавливаться для следующей. Вызовом функции gl VèrtexAttri bARB с индексом можно установить произвольный атрибут, который находится по этому индексу.

Этидве команды выполняют одни и те же действия, и каждая обозначает окончание определения вершины.

4.1.2. Uniform-переменные Шейдер может получить состояние OpenGL через встроенные uniform-переменные, начинающиеся с префикса gl_. Например, к текущей матрице модели-вида можно обратиться по имени gljfodel ViewMatrix. Свойства источника света можно получить из массива, в котором содержатся данные обо всех источниках света, например gl_L1ghtSource[2] .spotOi recti on. Изменения любого состояния OpenGL, однажды полученного шейдером, в дальнейшем отслеживаются и сразу становятся доступными шейдеру. Это позволяет приложению использовать команды OpenGL для косвенного управления шейдером.


⇐ Предыдущая| |Следующая ⇒