2010-03-04 15 views
6

Estoy intentando agregar algunos sombreadores a mi antiguo programa OpenGL que atrae muchos GL_POINTS y ​​algunos GL_LINES.GLSL con sombreador de fragmentos representa solo GL_POINTS negros

que crearon estas dos shaders:

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; 
} 

Fragmento de sombreado:

#version 120 

void main() 
{ 
    vec4 myOutputColor = gl_Color; 
    gl_FragColor = myOutputColor; 
    //gl_FragColor.r = 0.5; 
} 

Estos dos shaders de compilación y enlace sin problemas. Y el sombreador de vértices funciona muy bien, puedo ver los GL_POINTS desplazados usando ese pecado en el sombreador de vértices. Pero el problema es que solo puedo ver mis GL_POINTS y ​​GL_LINES si el color de fondo no es negro porque todos los puntos y líneas se vuelven negros. Parece que todos los colores establecidos con glColor3f en el código de representación se ignoran. Si descomiento la línea comentada en mi sombreador de fragmentos, puedo hacer que todas las líneas y puntos se vuelvan rojos, pero ¿no debería gl_Color corresponderse con el color que se configuró con glColor3f para cada punto?

¿Hay algo más en mi código OpenGL que pueda causar este comportamiento?

Respuesta

11

necesita pasar el color en el sombreador de vértices.

gl_FrontColor = gl_Color; 
+0

¡Gracias! Funciona ahora! No sé cómo me perdí esa parte en los tutoriales ... :) – ivans

+1

También vea la respuesta aquí para obtener más información: http://stackoverflow.com/questions/6430154/what-is-the-relationship-between-gl- color-y-gl-frontcolor-en-ambos-vértice-y-fr –

Cuestiones relacionadas