□ Отсутствие дополнительных библиотек или программ.
Язык шейдеров OpenGL, компилятор и компоновщик определены как часть OpenGL, Приложение не заботится о загрузке дополнительных библиотек. А усовершенствование компилятора происходит с установкой обновлений драйвера OpenGL,
2,7. Итоги
2.7. Итоги Следующие выводы помогут понять, как все части взаимодействуют на этапе выполнения:
□ Выполняемая программа для вершинного процессора, установленная как часть текущего состояния, будет выполняться один раз для каждой заданной вершины.
□ Выполняемая программа для фрагментного процессора, установленная как часть текущего состояния, будет выполняться один раз для каждого фрагмента, который приходит с этапа растеризации.
□ Есть два способа сообщения между приложением и вершинным шейдером: через attribute- и uniform-переменные.
□ Attribute-переменные могут изменяться часто: приложение устанавливает новое значение для каждой новой вершины.
□ Приложения передают произвольные данные вершин в вершинный шейдер через определенные разработчиком attribute-переменные.
□ Приложения передают стандартные данные вершин (цвет, нормаль, координаты текстуры, расположение в пространстве и т. д.) в вершинный шейдер через встроенные attribute-переменные.
□ Приложения могут передавать данные во фрагментный шейдер через uniform-переменные.
□ Uniform-переменные изменяются довольно редко - как минимум для целого графического примитива значение всегда будет оставаться неизменным.
□ Компилятор и компоновщик встроены в OpenGL (но средства для компиляции, компоновки и отладки шейдеров могут существовать сами по себе). Итак, далее описаны самые важные особенности языка шейдеров OpenGL:
Язык основан на синтаксисе языка С.
Основные элементы и многие ключевые слова заимствованы из С.
Векторы и матрицы добавлены как базовые типы.
Появились новые типы attribute, uniform, varying, которые описывают переменные для управления вводом/выводом шейдера.