Array ( )
Вход:




Главная | OpenGL | GLSL | AI | Сеть | Примеры | Библиотека

GLSL: Настройка OpenGL для GLSL: Обзор






Этот раздел, "настройка OpenGL для использования GLSL", подразумевает, что у вас уже есть пара
шейдеров, вершинный и пикселный, и вы хотите использовать их в приложении OpenGL. Если вы ещё не
готовы сами писать шейдеры, есть куча мест в интернете, где можно взять готовые.
Попробуйте [a=http://www.3dshaders.com/home/:a]сайт "Оранжевой книги". К тому же ПО для написания шейдеров
( [a=http://masandilov.ru/coding/sources/rendermonkey.2007-07-18-v1.71.59_july_2007_release.msi:a]Render Monkey ) содержит кучу примеров.


Подготовка программы к использованию шейдеров очень похожа на написание программы на C. Каждый
шейдер - это как бы C-модуль, и он ДОЛЖЕН быть скомпилирован отдельно, как и в C. Массив скомпилированных
шейдеров затем линкуется к программе, точно как в C.


Если версия OpenGL на вашем компьютере меньше 2.0, поддержка шейдеров у вас будет только в качестве расширения
ARB. Если же версия >= 2.0, поддержка шейдеров будет включена. Если вы не знаете, как подключать расширения,
вам следует взглянуть на библиотеку [a=http://glew.sourceforge.net/:a]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) для создания шейдеров,
функции будут обьяснены позже.











Комментарии:

Войдите, чтобы оставить комментарий:












Яндекс.Метрика
 Яндекс цитирования.