GLM:带有度数参数的函数已过时(当使用弧度时)

4

目前使用VC++ 11与SDL2,GLM和GLEW。问题出在GLM上,当我试图进行两件事情时:创建旋转矩阵,创建透视摄像机矩阵(3D)。

错误是:“GLM:以度为参数的透视函数已被弃用”尽管我向两个函数都传递了弧度(作为浮点数)。它说我应该定义类似于"#define GLM_FORCE_RADIANS"这样的东西。真的需要吗?

个人而言,除了OpenGL之外,我几乎都使用度数,因此不得不来回转换(用于AI移动等)很麻烦,实际上会在有很多NPC移动时导致CPU峰值。


例如,您应该指定弧度为glm :: radians(45.0f)。无论如何,警告都是一种过渡措施,将来可能会消失。当您需要转换数据时,始终会产生一些运行时成本,因为较低级别需要它。如果将度数->弧度证明很昂贵,那么您只需开始转换代码以使用弧度。在人类可读的数据文件中阅读以及任何您可能拥有或开发的编辑工具中,可以保留度数以简化操作。 - qeadz
谢谢您的回复。关于您所说的指定弧度,这正是我正在做的,但例如在透视图中,我使用的FOV角度为60,因此我执行了glm :: radians(60.0f),但是该函数由于某种原因认为我正在使用度数,并从60(约为1)进行弧度转换,导致我的FOV出现问题。 - HarrisonG16
2个回答

13

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

静态部分应该在编译时由编译器解决,只需将任何角度与glm相关的内容用该宏包围即可完成。同时添加

#define GLM_FORCE_RADIANS

在包含glm头文件之前,将其设置为默认使用弧度而不是角度。

为什么选择这个作为答案?使用宏吗? - stackoverblown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接