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?

War es hilfreich?

Lösung

Sie müssen die Farbe im Scheitelpunkt -Shader durchlaufen.

gl_FrontColor = gl_Color;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top