Соответствие имени attribute-переменной индексу дополнительного атрибута можно устанавливать в любой момент функцией gIBindAttribLocationARB. Эти соответствия становятся действительными только после вызова функции gl Li nk -ProgramARB. После успешной компоновки программного объекта эти соответствия сохраняются до следующей операции компоновки, и их значения можно получить средствами OpenGL.

Этой функцией нельзя устанавливать соответствия со стандартными атрибутами вершин OpenGL - это происходит автоматически при необходимости. Результаты любых вызовов функции gIBindAttribLocationARB проявляются только после следующей операции компоновки.

Примечания Функцию gIBindAttribLocationARB можно вызывать перед связыванием шейдер-ных объектов с программным объектом. Установка соответствия индекса имени attribute-переменной выполняется без ошибок, даже если эта переменная не используется в вершинном шейдере.

Если name раньше уже соответствовала какому-либо индексу, эта связь теряется. Это означает, что несколько индексов не могут соответствовать одной attribute-переменной, но возможно обратное: один индекс может соответствовать нескольким attribute-переменным и в каждую из них будет записываться одно и то же значение.

Соответствие одного индекса нескольким attribute-переменным является использованием псевдонимов, и эту возможность можно применять лишь в случаях, если только один из атрибутов является активным в выполняемой программе либо каждый возможный путь выполнения шейдера использует один из псевдонимов. Благодаря этому компилятор и компоновщик могут полагаться на отсутствие Приложение Б. Справочник функций API

псевдонимов в шейдере и выполнять более качественную оптимизацию. Реализации OpenGL не всегда выполняют проверку на наличие псевдонимов. Дополнительные атрибуты не могут быть псевдонимами стандартных (за исключением дополнительного атрибута 0).

Активные атрибуты, для которых соответствие не установлено непосредственно, связываются при вызове функции glLinkProgramARB, а индексы в дальнейшем можно узнать с помощью функции gl GetAttri bLocationARB.


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