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