GLSL mit Fragment -Shader rendert nur schwarze GL_Points
Frage
Ich versuche, meinem alten OpenGL -Programm einige Shader hinzuzufügen, das viele GL_Points und einige GL_LINES zeichnet.
Ich habe diese beiden Shader erstellt:
Scheitelpunkt Shader:
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;
}
Fragment Shader:
#version 120
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
//gl_FragColor.r = 0.5;
}
Diese beiden Shader kompilieren und verbinden sich ohne Probleme. Und der Scheitelpunkt -Shader funktioniert hervorragend, ich kann die GL_Points mit dieser Sünde im Scheitelpunkt -Shader sehen. Das Problem ist jedoch, dass ich nur meine GL_Points und GL_lines sehen kann, wenn die Hintergrundfarbe nicht schwarz ist, da alle Punkte und Linien schwarz gerendert werden. Es scheint, dass alle Farben, die mit GLCOLOR3F im Rendering -Code festgelegt sind, ignoriert werden. Wenn ich die kommentierte Zeile in meinem Fragment -Shader überfahre, kann ich alle Linien und Punkte rot machen, aber sollte GL_Color der Farbe entsprechen, die für jeden Punkt mit GLCOLOR3F eingestellt wurde?
Gibt es noch etwas in meinem OpenGL -Code, das dieses Verhalten verursachen könnte?
Lösung
Sie müssen die Farbe im Scheitelpunkt -Shader durchlaufen.
gl_FrontColor = gl_Color;