我正在尝试将颜色从顶点着色器传递到片段着色器,并将gl_FragColor
设置为此值。当我似乎这样做时,我制作的物体的颜色闪烁着所有不同的颜色,没有任何可辨别的图案。但是,当我将片段着色器中的颜色设置为类似于此gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0)
的颜色时,颜色完全是白色而没有闪烁。我将在下面发布我的着色器:
顶点着色器:
#version 130
//not using these for now
//uniform mat4 uniform_modelMatrix;
//uniform mat4 uniform_viewMatrix;
//uniform mat4 uniform_projectionMatrix;
in vec3 in_Position;
in vec4 in_Color;
void main(void)
{
//Set Position to XYZW
vec4 position = vec4(in_Position.xyz, 1.0);
gl_Position = position;
//Set Passed Color to white
out_Color = vec4(1.0, 1.0, 1.0, 1.0);
}
Fragment Shader:
#version 130
in vec4 pass_Color;
void main(void)
{
//Set Color to color from vertex shader - doesn't work
gl_FragColor = pass_Color;
//Set Color to white anyways - works
//gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}
我不知道我是否在顶点着色器中错误地传递了值,或者我是否在片段着色器中没有正确地接收它们。谁能发现任何错误?
答案 0 :(得分:1)
所以我的伙伴帮助了我,我在名为out_Color
的顶点着色器中有了out变量(我也意识到我没有正确复制)。但是我在顶点着色器out vec4 out_Color
中有这个声明。我也在片段着色器in vec4 pass_Color
中。一旦我将名称更改为pass_Color
,程序就会完美运行。
因此,为了将来使用,如果您在着色器之间传递信息,请确保这些变量的名称相同。