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.


⇐ Предыдущая| |Следующая ⇒