繁体   English   中英

GLSL片段着色器语法错误

[英]GLSL fragment shader syntax error

以下简单片段着色器代码失败,在日志中留下了一条无信息的消息: ERROR: 0:1: 'gl_Color' : syntax error syntax error

void main()
{
  vec4 myOutputColor(gl_Color);
  gl_FragColor = myOutputColor;
}

而以下一个有效:

void main()
{
  glFragColor = gl_Color;
}

这令人难以置信,就像在Lighthouse3D的教程中一样, gl_Color被认为是一个vec4。 为什么我不能将它分配给另一个vec4?

尝试正常分配。 像这样:

void main()
{
  vec4 myOutputColor = gl_Color;
  gl_FragColor = myOutputColor;
}

编辑:

第二个答案实际上是正确的,但是没有必要使用vec4()构造函数,因为两者的类型相同。 如果你曾经说过(r,g,b,w)元组你可以写:

vec4 myOutputColor = vec4(r, g, b, w);

要么

// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);

等等

一般来说,你应该使用稍微不同的语法

(参见OpenGL着色语言规范

vec4 myOutputColor = vec4(gl_Color);
gl_FragColor = myOutputColor;

这不同于你的样本编译我的mashine(Windows,Nvidia卡)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM