Opengl 带有片段着色器的GLSL仅渲染黑色GL_点

Opengl 带有片段着色器的GLSL仅渲染黑色GL_点,opengl,shader,glsl,Opengl,Shader,Glsl,我正在尝试将一些着色器添加到我的旧OpenGL程序中,该程序绘制了许多GL_点和一些GL_线 我创建了以下两个着色器: 顶点着色器: 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; } 片段着色器: #version 120 void main() {

我正在尝试将一些着色器添加到我的旧OpenGL程序中,该程序绘制了许多GL_点和一些GL_线

我创建了以下两个着色器:

顶点着色器:

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;
}
片段着色器:

#version 120 

void main()
{
    vec4 myOutputColor = gl_Color;
    gl_FragColor = myOutputColor;
    //gl_FragColor.r = 0.5;
}
这两个着色器编译和链接没有问题。顶点着色器工作得很好,我可以看到使用顶点着色器中的sin替换的GL_点。但问题是,如果背景色不是黑色,我只能看到我的GL_点和GL_线,因为所有点和线都渲染为黑色。在渲染代码中使用glColor3f设置的所有颜色似乎都被忽略。如果我在片段着色器中取消注释注释注释的线条,我可以使所有线条和点变为红色,但gl_颜色不应该对应于每个点用glColor3f设置的颜色吗


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

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

gl_FrontColor = gl_Color;

谢谢现在工作!我不知道我怎么会错过教程中的那个部分:)有关更多信息,请参见此处的答案: