Ich versuche einige Shader zu meinem alten OpenGL-Programm hinzuzufügen, das viele GL_POINTS und einige GL_LINES zeichnet.GLSL mit Fragment-Shader rendert nur Schwarz GL_POINTS
Ich habe diese beiden Shadern:
Vertex-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 verknüpfen, ohne Probleme. Und der Vertex-Shader funktioniert großartig, ich kann die GL_POINTS sehen, die mit dieser Sünde im Vertex-Shader verschoben wurden. Aber das Problem ist, dass ich meine GL_POINTS und GL_LINES nur sehen kann, wenn die Hintergrundfarbe nicht schwarz ist, weil alle Punkte und Linien schwarz dargestellt werden. Es scheint, dass alle mit glColor3f im Rendering-Code gesetzten Farben ignoriert werden. Wenn ich die kommentierte Zeile in meinem Fragment-Shader auskommentiere, kann ich alle Linien und Punkte rot machen, aber sollte gl_Color nicht der Farbe entsprechen, die mit glColor3f für jeden Punkt gesetzt wurde?
Gibt es noch etwas in meinem OpenGL-Code, das dieses Verhalten verursachen könnte?
Danke! Arbeitet jetzt! Ich weiß nicht, wie ich diesen Teil in den Tutorials verpasst habe .. :) – ivans
Siehe auch die Antwort hier für mehr: http://stackoverflow.com/questions/6430154/what-is-the-relationship-between-gl- color-and-gl-frontcolor-in-beiden-Vertex-und-fr –