我一直在制作我自己的 OpenGL 游戏来学习 C++(来自 Java)。我正在另一台计算机上测试它,以便我可以在较弱的系统上测试它的性能,但我发现存在着色器编译器错误。
似乎在我运行英特尔集成显卡的计算机上,以下行会导致语法错误。
float ambientLight = 2f;
Run Code Online (Sandbox Code Playgroud)
错误只是'f' syntax error,所以很自然地我删除了 f,现在它在两台机器上都运行良好。我猜这是某种驱动程序错误,但我不确定为什么会出现这种差异,以及这是否意味着我应该停止将fs 放在 glsl 中的浮点声明中。
出于我仍然无法理解的原因,GLSL 规范要求浮点文字后缀 ( f, lf) 仅出现在明确的浮点值之后。2是整数文字,而不是浮点文字,因此不能用f. 文字不是浮点文字,除非它1e4在某处清楚地有小数或指数(例如)。
所以你必须把它写成2.f.
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |