GLM: функция, принимающая градусы в качестве параметра, устарела (ПРИ ИСПОЛЬЗОВАНИИ РАДИАНОВ)

В настоящее время используется VC++ 11 с SDL2, GLM и GLEW. Проблема возникает из-за GLM, когда я пытаюсь сделать две вещи: создать матрицу вращения, создать матрицу камеры с перспективой (3D).

Ошибка: "GLM: функция перспективы, использующая градусы в качестве параметра, устарела", несмотря на то, что я передаю радианы (как числа с плавающей запятой) обеим функциям. В нем говорится, что я должен определить что-то вроде «#define GLM_FORCE_RADIANS». Это действительно необходимо?

Лично я использую градусы для всего, кроме OpenGL, поэтому необходимость конвертировать туда-сюда (для движения ИИ и прочего) доставляет неудобства и фактически вызывает всплеск загрузки ЦП, когда у меня движется много NPC.


person HarrisonG16    schedule 30.05.2014    source источник
comment
Вы должны указать радианы, например, как в glm::radians(45.0f). В любом случае предупреждения являются переходной мерой, которая, вероятно, исчезнет в будущем. Вы всегда будете нести некоторые затраты во время выполнения, когда вам нужно преобразовать ваши данные, потому что этого требует более низкий уровень. Если градусы -> радианы оказываются дорогими, вам просто нужно начать преобразовывать свой код для использования радианов. Вы можете сохранять степени для простоты чтения в удобочитаемых файлах данных, а также в любых инструментах редактирования, которые у вас могут быть или которые вы разрабатываете.   -  person qeadz    schedule 30.05.2014
comment
Спасибо за ваш ответ. Что касается того, что вы говорили об указании радианов, это то, что я делаю, но, например, с перспективой, угол обзора, который я использую, равен 60, поэтому я сделал glm::radians(60.0f), но затем функция для какая-то причина думает, что я использую градусы и делаю преобразование в радианы из 60 (~ 1 ish), и я получаю испорченный FOV   -  person HarrisonG16    schedule 30.05.2014


Ответы (2)


#define degreesToRadians(x) x*(3.141592f/180.0f)

статическая часть должна быть разрешена компилятором во время компиляции, просто окружите все степени glm этим макросом, и все готово. Также добавить

#define GLM_FORCE_RADIANS

перед включением заголовков и glm, чтобы по умолчанию использовались радианы вместо градусов

person Richard Peters    schedule 04.06.2014

Вместо ручного преобразования вы можете использовать

glm::radians(degrees) // from degrees to radians. 

Or

glm::degrees(radians) // from radians to degrees. 

Для получения дополнительной информации о тригонометрических функциях glm посетите эту страницу: http://glm.g-truc.net/0.9.4/api/a00136.html#ga4fb76e28851c9ff6653532566084e091

person alexX AleX alexge50    schedule 26.06.2015