Этот раздел, «настройка OpenGL для использования GLSL», подразумевает, что у вас уже есть пара шейдеров, вершинный и пикселный, и вы хотите использовать их в приложении OpenGL. Если вы ещё не готовы сами писать шейдеры, есть куча мест в интернете, где можно взять готовые. Попробуйте сайт «Оранжевой книги». К тому же ПО для написания шейдеров ( Render Monkey ) содержит кучу примеров.
Подготовка программы к использованию шейдеров очень похожа на написание программы на C. Каждый шейдер — это как бы C-модуль, и он ДОЛЖЕН быть скомпилирован отдельно, как и в C. Массив скомпилированных шейдеров затем линкуется к программе, точно как в C.
Если версия OpenGL на вашем компьютере меньше 2.0, поддержка шейдеров у вас будет только в качестве расширения ARB. Если же версия >= 2.0, поддержка шейдеров будет включена. Если вы не знаете, как подключать расширения, вам следует взглянуть на библиотеку GLEW, которая упрощает подключение и использование расширений OpenGL.
Если версия < 2.0, нужно подключить 2 расширения:
GL_ARB_fragment_shader
GL_ARB_vertex_shader
Маленький пример программы, проверяющей с помощью GLUT и GLEW доступность расширений:
#include <GL/glut.h>void main(int argc, char **argv) {glutInit(&argc, argv);…
glewInit();
if (GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader)
printf(«Ready for GLSL
«);
else {
printf(«Not totally ready 🙁
«);
exit(1);
}
setShaders();
glutMainLoop();
}
Чтобы проверить доступность OpenGL 2.0 попробуйте что-то вроде этого:
#include <GL/glut.h>void main(int argc, char **argv) {glutInit(&argc, argv);…
glewInit();
if (glewIsSupported(«GL_VERSION_2_0»))
printf(«Ready for OpenGL 2.0
«);
else {
printf(«OpenGL 2.0 not supported
«);
exit(1);
}
setShaders();
glutMainLoop();
}
Схема ниже показывает необходимые шаги (в синтаксисе OpenGL 2.0) для создания шейдеров, функции будут объяснены позже.