API языка шейдеров OpenGL
Расширения OpenGL, которые называются ARB_shader_objects, ARB_vertex_shader и ARB_fragnient_shader, представляют новые функции и возможности для поддержки шейдеров, написанных на языке шейдеров OpenGL. Этот набор функций в данной книге называется API языка шейдеров OpenGL. Чтобы определить, поддерживает ли данная реализация OpenGL язык шейдеров, достаточно вызвать функцию gl GetString с аргументом GL_EXTENSIÛNS и проверить, содержит ли возвращаемая строка подстроки GL_ARB_shader_objects,GL_ARB__vertex_shader HGL_ARB_fragment_shader. Таким образом можно определить и версию языка. Если возвращаемая строка содержит GL_ARB_shading_1anguage_100, значит, версия языка шейдеров - 1.00.
В этой главе будут обсуждаться функции для создания, загрузки, компиляции и компоновки шейдеров, а также функции для передачи атрибутов вершины и uniform-переменных щейдерам. Все эти функции перечислены в приложении Б.
В конце главы будет обсуждаться код приложения, необходимый для создания и использования шейдера кирпичной стены, рассмотренного в главе 6. Читатель может просмотреть список функций, приведенный в разделе 7.11, а затем вернуться к описаниям функций в деталях.
Вот приблизительный сценарий создания и использования шейдеров OpenGL.
□ Создать один или несколько пустых шейдерных объектов функцией gl Create-ShaderObjectARB,
□ Задать исходный код для этих шейдеров функцией gl ShaderSourceARB.
□ Скомпилировать каждый шейдер функцией gl Compi 1 eShaderARB.
□ Создать программный объект функцией glCreateProgramObjectARB.
□ Присоединить все шейдерные объекты к программному объекту функцией glAttachObjectARB.
□ Скомпоновать программный объект функцией gl LinkProgramARB.
□ Установить выполняемую программу как часть текущего состояния OpenGL функцией glUseProgramObjectARB.
□ Если шейдеры используют uniform-переменные, место их расположения запрашивается функцией gl GetUni f ormLocat i onARB уже после того, как отработала функция gl Li nkProgramARB. Значения uniform-переменных задаются функцией glUniformARB.