Вопрос

Можно ли установить цвет одной вершины, используя программу шейдера GLSL Vertex, так же, как GL_POSTION изменяет положение вершины?

Это было полезно?

Решение

Для версий GLSL предварительной версии 1.30 вы хотите написать в gl_FrontColor или же gl_BackColor Встроенные встроенные вкладки, доступные в вершине шейдера. Читайте о вариантах в спецификации GLSL 1.10 (http://www.opengl.org/registry/doc/glslangspec.full.1.10.59.pdf) узнать больше о них или спецификации расширения GL_ARB_VERTEX_SHADER.

gl_FrontColor а также gl_BackColor 4D -векторы RGBA, которые принимают нормализованные скаляры с плавающей запятой.

Но это будет установлено все Вершины с красным, а не только одна вершина. Это потому, что один и тот же вершинный шейдер запускается для всех вершин. Если вы хотите установить отдельные цвета, используйте glColorPointer вместе с glDrawArrays, glDrawElements, glDrawRangeElements или же glMultiDrawElements. Анкет Цвет вершины, установленный glColorPointer можно прочитать как gl_Color В вершине шейдера. gl_Color В вершинном шейдере находится атрибут для переносчика.

Чтобы прочитать цвет, который вы написали в вершинном шейдере, в фрагментной шейдере, прочитайте встроенное изменение gl_Color. Анкет Завершенные фрагменты должны быть написаны на gl_FragColor.

Пример вершины -шейдера:

void main()
{
    gl_FrontColor = gl_Color;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

Пример фрагмента Шейдер:

void main()
{
    gl_FragColor = gl_Color;
}

Кроме того, чтобы заставить вершин-шейдер установить варианты, как и конвейер с фиксированной функцией OpenGL, вызовите функцию ftransform ().

void main()
{
    ftransform();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top