因为普通人更习惯于计算度数——OpenGL 是为了简单地使用。请注意,所有对度数进行操作的函数都是“高级”函数。
对于 OpenGL 本身,它接收弧度还是度数没有区别——无论如何,它们在内部都会转换为变换矩阵,因此使用其中一个或另一个没有计算增益。
那么,如果您可以允许人们使用学位,为什么还要让他们复杂化呢?无论如何,任何在 OpenGL 中认真编码的人都会提供他们自己的从四元数计算而来的矩阵。
本着同样的精神,我们可以问,为什么有glRotatef
,gluPerspective
无论如何,因为矩阵在各个方面都更优雅,并且允许更高级别的控制。
逐点:
- 优雅——矩阵在各个方面都更加优雅
- C 库 - C 库由于计算原因使用它们,获取角度的 GL 函数并不意味着用于计算繁重的任务(直接使用矩阵),并且可能无论如何实现都有一个角度查找表。
- 任何其他库 - 出于与 Clib 相同的原因,跟随 C 库 - 而且,这是不正确的 - 许多 C++ 库允许选择,有些使用后者
- 计算方便 - 没关系 - 内部表示是矩阵,如果要高效,计算可能使用查找表完成 - 没有对角度的直接操作,所以表示无关紧要
另请注意:所有使用度数的功能在当前标准(3.2)中已弃用。glRotatef
是唯一一个取度数的函数,或者事实上,一个角度。glu是一个实用程序库,不适用于重型部署,因此它是针对可读性量身定制的,并且gluPerspective(... 60.0f..)
在提供 FOV 方面比以往更具可读性和“标准” gluPerspective( ... M_PI / 3.0f ... )
。
最后注意事项: