为什么在定义浮点数时使用'f'后缀有时会导致GLSL编译器错误?

时间:2019-01-02 03:16:04

标签: opengl glsl

我一直在做自己的OpenGL游戏,以学习C ++(来自Java)为乐。我正在另一台计算机上进行测试,因此可以在较弱的系统上测试其性能,然后发现着色器编译器错误。

在运行Intel Integrated Graphics的计算机上,以下行似乎导致语法错误。

float ambientLight = 2f;

错误只是'f' syntax error,所以自然地我删除了f,现在它在两台机器上都运行良好。我猜这是某种驱动程序错误,但是我不确定是为什么会有这种差异,以及是否应该停止将f放在glsl的float声明中。< / p>

1 个答案:

答案 0 :(得分:4)

出于我一直不知道的原因,GLSL规范要求浮点文字后缀(flf)仅出现在明确的浮点值之后。 2整数文字,而不是浮点文字,因此不能用f装饰。文字不是浮点文字,除非在其中明显有小数或指数(例如1e4)。

因此,您必须将其写为2.f