带片段着色器的GLSL仅渲染黑色GL_POINTS

iva*_*ans 6 opengl shader glsl

我试图在我的旧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;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

#version 120 

void main()
{
    vec4 myOutputColor = gl_Color;
    gl_FragColor = myOutputColor;
    //gl_FragColor.r = 0.5;
}
Run Code Online (Sandbox Code Playgroud)

这两个着色器编译和链接没有问题.并且顶点着色器工作得很好,我可以看到GL_POINTS在顶点着色器中使用该sin移位.但问题是,如果背景颜色不是黑色,我只能看到我的GL_POINTS和GL_LINES,因为所有的点和线都呈现为黑色.似乎忽略了渲染代码中使用glColor3f设置的所有颜色.如果我取消注释片段着色器中的注释行,我可以将所有的行和点都设置为红色,但是gl_Color不应该对应于每个点使用glColor3f设置的颜色吗?

我的OpenGL代码中是否还有其他可能导致此行为的内容?

Bah*_*bar 11

你需要在顶点着色器中传递颜色.

gl_FrontColor = gl_Color;
Run Code Online (Sandbox Code Playgroud)