Этот раздел, «настройка 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/glew.h>
#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/glew.h>
#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) для создания шейдеров, функции будут объяснены позже.