Array ( )
Вход:




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

GLSL: Настройка OpenGL для GLSL: Создание шейдера






Следующая таблица показывает шаги создания шейдера:
Создание


Первый шаг - создание обьекта, контейнера шейдера. Функции, создающие его,
возвращают дескриптор контейнера.

Синтаксис OpenGL 2.0:
GLuint glCreateShader(GLenum shaderType);

Параметр shaderType - GL_VERTEX_SHADER или GL_FRAGMENT_SHADER.

Синтаксис расширений ARB:
GLhandleARB glCreateShaderObjectARB(GLenum shaderType);

Параметр shaderType - GL_VERTEX_SHADER_ARB или GL_FRAGMENT_SHADER_ARB.


Вы можете создавать столько шейдеров, сколько хотите, но помните, что только в главной функции main
обьявляются вершинные шейдеры, и только в главной функции main обьявляются пикселные шейдеры.

Следующий шаг - задать исходный код шейдера. Исходный код шейдера - это массив строк, хотя вы можете
использовать указатель на единственную строку.

Синтаксис добавления кода шейдера для OpenGL 2.0:
void glShaderSource(GLuint shader, int numOfStrings, const char **strings, int *lenOfStrings);

// Параметры:
//    shader - Дескриптор шейдера
//    numOfStrings - число строк в массиве
//    strings - массив строк
//    lenOfStrings - массив с длинной каждой строки или с NULL, что значит, что в строке - завершающий NULL



Синтаксис добавления кода шейдера для расширений ARB:
void glShaderSourceARB(GLhandleARB shader, int numOfStrings, const char **strings, int *lenOfStrings);

// Параметры:
//    shader - дескриптоп шейдера
//    numOfStrings - число строк в массиве.
//    strings - массив строк.
//    lenOfStrings - массив с длинной каждой строки или с NULL, что значит, что в строке - завершающий NULL.





И наконец, шейдер должен быть скомпилирован.

Синтаксис OpenGL 2.0:
void glCompileShader(GLuint shader);



Синтаксис расширений ARB:
void glCompileShaderARB(GLhandleARB shader);










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

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












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