我一直在做自己的OpenGL游戏,以学习C ++(来自Java)为乐。我正在另一台计算机上进行测试,因此可以在较弱的系统上测试其性能,然后发现着色器编译器错误。
在运行Intel Integrated Graphics的计算机上,以下行似乎导致语法错误。
float ambientLight = 2f;
错误只是'f' syntax error
,所以自然地我删除了f,现在它在两台机器上都运行良好。我猜这是某种驱动程序错误,但是我不确定是为什么会有这种差异,以及是否应该停止将f
放在glsl的float声明中。< / p>
答案 0 :(得分:4)
出于我一直不知道的原因,GLSL规范要求浮点文字后缀(f
,lf
)仅出现在明确的浮点值之后。 2
是整数文字,而不是浮点文字,因此不能用f
装饰。文字不是浮点文字,除非在其中明显有小数或指数(例如1e4
)。
因此,您必须将其写为2.f
。