Я пытаюсь добавить несколько шейдеров в мою старую программу OpenGL, которая рисует много GL_POINTS и немного GL_LINES.
Я создал эти два шейдера:
Вершинный шейдер:
void main()
{
vec4 v = vec4(gl_Vertex);
v.z = v.z + sin(v.x*v.x + v.y*v.y)/10.0;
gl_Position = gl_ModelViewProjectionMatrix * v;
}
Фрагмент шейдера:
#version 120
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
//gl_FragColor.r = 0.5;
}
Эти два шейдера компилируются и связываются без проблем. И вершинный шейдер отлично работает, я вижу, как GL_POINTS смещается с помощью этого греха в вершинном шейдере. Но проблема в том, что я могу видеть свои GL_POINTS и GL_LINES, только если цвет фона не черный, потому что все точки и линии отображаются черным. Кажется, что все цвета, заданные с помощью glColor3f в коде рендеринга, игнорируются. Если я раскомментирую закомментированную строку в своем фрагментном шейдере, я могу сделать все линии и точки красными, но не должен ли gl_Color соответствовать цвету, который был установлен с помощью glColor3f для каждой точки?
Есть ли что-нибудь еще в моем коде OpenGL, которое могло бы вызвать такое поведение?