8. Stroustrup B. The С++ Programming Language. Special 3rd ed. Reading, MS: Addison-Wesley, 2000.
Программируемая часть операций OpenGL1
Язык тендеров OpenGL был создан специально для работы с OpenGL. Входные и выходные данные для вершинного и фрагментного тендеров были встроены в стандартную последовательность операций OpenGL в строго определенной форме. Место программируемых процессоров в последовательности операций OpenGL описано в разделе 2.3. В данной главе обсуждаются подробности интегрирования шейдеров и механизмы языка, позволяющие это сделать.
Приложения передают данные шейдеру посредством определенных разработчиком attribute- и uniform-переменных. Язык предоставляет также встроенные переменные для передачи данных между программируемыми процессорами и стандартной функциональностью следующим образом.
□ Стандартные атрибуты OpenGL можно получить из вершинного шейдера с помощью встроенных attribute-переменных.
□ Состояния OpenGL доступны как из вершинного, так и из фрагментного шейдеров через встроенные uniform-переменные.
□ Вершинные шейдеры передают данные для последующей обработки через специальные встроенные выходные переменные вершинного шейдера и встроенные varying-переменные.
□ Фрагментные шейдеры получают результаты предварительной обработки через встроенные входные переменные фрагментного шейдера и встроенные varying-переменные.
□ Фрагментные шейдеры возвращают результаты вычислений через специальные выходные переменные фрагментного шейдера.
Встроенные константы доступны из обоих видов шейдеров, они определяют некоторые платформозависимые значения, доступные посредством функции gl Get. Все встроенные идентификаторы начинаются с префикса gl_.
4.1. Вершинный процессор
На вершинном процессоре и выполняется вершинный шейдер, который замещает стандартную обработку вершин в OpenGL, отличительные особенности которой
1 Информационная поддержка Бартольда Лихтспбильта (Bartliold Lichtenbelt).
4.1. Вершинный процессор