Я пытаюсь добавить некоторые программы построения теней к своей старой программе 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, который мог вызвать это поведение?
вам нужно передать цвет в вершинном шейдере.
gl_FrontColor = gl_Color;