Почему суффикс 'f' при определении значений с плавающей точкой иногда вызывает ошибки компилятора GLSL? - PullRequest
0 голосов
/ 02 января 2019

Я делаю свою собственную игру OpenGL для забавы, чтобы изучать C ++ (из Java).Я тестировал его на другом компьютере, чтобы проверить его производительность на более слабой системе, и обнаружил ошибку компилятора шейдера.

Похоже, что на моем компьютере, работающем с интегрированной графикой Intel,следующая строка вызывает синтаксическую ошибку.

float ambientLight = 2f;

Ошибка просто 'f' syntax error, поэтому, естественно, я удалил f, и теперь она работает нормально на обеих машинах.Я предполагаю, что это какая-то ошибка драйвера, но я не совсем уверен, почему существует такое расхождение и означает ли это, что я должен прекратить помещать f s в мои объявления float в glsl все вместе.

1 Ответ

0 голосов
/ 02 января 2019

По причинам, которые по-прежнему ускользают от меня, спецификация GLSL требует, чтобы буквенные суффиксы с плавающей точкой (f, lf) появлялись только после однозначных значений с плавающей точкой. 2 является литералом integer , а не литералом с плавающей запятой, поэтому он не может быть украшен f. Литерал не является литералом с плавающей точкой, если он явно не имеет десятичной дроби или степени (например, 1e4) где-то в нем.

Итак, вы должны написать это как 2.f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...