□ Один высокоуровневый язык используется для всей программируемой цепочки обработки графики.

Язык шейдеров OpenGL используется для написания как вершинных, так и фрагментных шейдеров для OpenGL, эти процессы различаются незначительно. В будущем предполагается, что язык шейдеров будет использоваться для программирования и других графических операций в OpenGL. Например, уже обсуждалась программируемость сжатия и извлечения изображений произвольных форматов и мозаичного представления поверхностей.

□ Модульное программирование.

Разделение компиляции и компоновки на два отдельных шага - удачное решение: при разработке программ для сложных алгоритмов проявляется большая гибкость. Вместо того чтобы создавать один большой шейдер, разработчики могут сделать целую коллекцию небольших шейдеров, их можно компилировать независимо и затем прикреплять к программному объекту. Шейдеры будут создаваться на базе общих интерфейсов и, таким образом, станут взаимозаменяемыми, а операция компоновки соединит их в программу.

□ Отсутствие дополнительных библиотек или программ.

Язык шейдеров OpenGL, компилятор и компоновщик определены как часть OpenGL. Приложение не заботится о загрузке дополнительных библиотек. А усовершенствование компилятора происходит с установкой обновлений драйвера OpenGL,

2,7. Итоги

Следующие выводы помогут понять, как все части взаимодействуют на этапе выполнения:

□ Выполняемая программа для вершинного процессора, установленная как часть текущего состояния, будет выполняться один раз для каждой заданной вершины.

□ Выполняемая программа для фрагментного процессора, установленная как часть текущего состояния, будет выполняться один раз для каждого фрагмента, который приходит с этапа растеризации.

□ Есть два способа сообщения между приложением и вершинным шейдером: через attribute- и uniform-переменные.

□ Attribute-переменные могут изменяться часто: приложение устанавливает новое значение для каждой новой вершины.

□ Приложения передают произвольные данные вершин в вершинный шейдер через определенные разработчиком attribute-переменные.

Q Приложения передают стандартные данные вершин (цвет, нормаль, координаты текстуры, расположение в пространстве и т. д.) в вершинный шейдер через встроенные attribute-переменные.

□ Приложения могут передавать данные во фрагментный шейдер через uniform-переменные.

□ Uniform-переменные изменяются довольно редко - как минимум для целого графического примитива значение всегда будет оставаться неизменным.

□ Компилятор и компоновщик встроены в OpenGL (но средства для компиляции, компоновки и отладки шейдеров могут существовать сами по себе). Итак, далее описаны самые важные особенности языка шейдеров OpenGL:

■ Язык основан на синтаксисе языка С.

• Основные элементы и многие ключевые слова заимствованы из С.


⇐ вернуться назад | | далее ⇒