以下简单的片段着色器代码失败,在日志中留下一条无信息的消息:ERROR: 0:1: 'gl_Color' : syntax error syntax error
void main()
{
vec4 myOutputColor(gl_Color);
gl_FragColor = myOutputColor;
}
而以下一项有效:
void main()
{
glFragColor = gl_Color;
}
这让我很困惑,就像Lighthouse3D 的教程 http://www.lighthouse3d.com/opengl/glsl/index.php?colorgl_Color 据说是 vec4。为什么我不能将它分配给另一个 vec4?
尝试正常分配。像这样:
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
}
Edit:
第二个答案实际上同样正确,但不需要使用 vec4() 构造函数,因为两者的类型相同。如果你有一个 (r,g,b,w) 元组,你可以写:
vec4 myOutputColor = vec4(r, g, b, w);
or
// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);
etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)