以下简单片段着色器代码失败,留下我与日志在不提供信息的消息: 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);

其他提示

Aparrently应该使用稍微不同的语法

(参见 OpenGL着色语言规范

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

这不像你的样品编译罚款我mashine(Windows中,Nvidia显卡)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top