Если в программном объекте содержится один или больше успешно скомпилированных и скомпонованных шейдерных объектов типа GL_VERTEX_SHADER_ARB, он будет содержать выполняемую программу для вершинного процессора. А если в программном объекте содержится один или больше успешно скомпилированных и скомпонованных шейдерных объектов типа GL_FRAGMENT_SHADER_ARB, он будет содержать выполняемую программу для фрагментного процессора.
После успешной установки выполняемых программ на программируемых процессорах соответствующая стандартная функциональность уже не будет работать. А именно, если программа установлена на вершинном процессоре, следующие стандартные операции не выполняются:
□ на координаты вершин не накладывается матрица модели - вида;
□ на координаты вершин не накладывается проекционная матрица;
□ на координаты вершин не накладываются матрицы текстур;
□ нормали не преобразуются в пространство координат обзора;
□ не выполняются масштабирование и нормализация нормалей;
□ не выполняется нормализация нормалей по GL_AUT0_N!0RMAL;
□ текстурные координаты не создаются автоматически;
□ не вычисляется освещение для вершин;
□ не вычисляется цвет материала;
□ не вычисляется цвет освещения;
□ все перечисленное не выполняется также при установке текущих координат.
glUseProgramObjectARB
Вместо этого необходимые операции должны быть реализованы в самом вершинном шейдере.
Если программа установлена на фрагментном процессоре, следующие стандартные операции не выполняются:
□ не накладываются текстурное окружение и текстурные функции;
□ не используются текстуры;
□ не выполняется сложение цветов;
□ не вычисляется дымка.
Вместо этого необходимые операции должны быть реализованы в самом фрагментном шейдере.
В то время когда программный объект является частью текущего состояния, приложение может менять связанные шейдерные объекты, компилировать их, присоединять дополнительные шейдерные объекты, отсоединять или удалять их. Все эти операции не влияют на уже установленные выполняемые программы. Однако повторная успешная компоновка текущего программного объекта функцией gl Li nkProgramARB повлечет за собой установку новых выполняемых программ. Несмотря на то что часть стандартной функциональности при этом недоступна, параметры внутреннего состояния OpenGL, контролирующие ее, можно изменять обычными вызовами функций OpenGL API.