我有一个有意语法错误的GLSL片段着色器.
void main()
{
// vec4 is ommitted
gl_FragColor = (1,1,0,1);
}
Run Code Online (Sandbox Code Playgroud)
但我仍然可以编译和链接它没有错误.运行我的应用程序后,我在屏幕上看不到任何内容 这是一种奇怪的行为还是其他什么?
您已使用逗号运算符.
您的代码会对每个逗号分隔的数字进行评估,并将它们全部丢弃,除了最后一个,因此它等同于写入
gl_FragColor = (1);
Run Code Online (Sandbox Code Playgroud)
其中括号仅用于分组,而不是函数调用,因此可以忽略.当您为向量分配单个值时,它会将该值复制到所有组件,因此您的语句与写入相同 -
gl_FragColor = vec4(1,1,1,1);
Run Code Online (Sandbox Code Playgroud)
"背景"是白色的吗?在这种情况下,你什么都看不到.
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |