为此,有很多项目已经选择了通用图形工具包。那里的GMTL很不错-它非常小,非常实用,并且被广泛使用以使其非常可靠。OpenSG,VRJuggler和其他项目都已转而使用此方法,而不是使用自己的手动Vertor /矩阵数学方法。
我发现它非常不错-它通过模板完成所有操作,因此非常灵活且非常快。
编辑:
在讨论讨论和进行编辑之后,我想我会抛出更多有关特定实现的优点和缺点的信息,以及在给定情况的情况下为什么会选择其中一个的更多信息。
GMTL -
好处:简单的API,专门为图形引擎设计。包括许多其他渲染所没有的面向渲染的原始类型(例如,平面,AABB,具有多个插值的四边形等)。非常低的内存开销,相当快,易于使用。
缺点:API非常专注于渲染和图形。不包括通用(NxM)矩阵,矩阵分解和求解等,因为它们不在传统图形/几何应用程序的范围内。
本征 -
好处:干净的API,相当容易使用。包括带有四元数和几何变换的几何模块。低内存开销。大型NxN矩阵和其他通用数学例程的完整,高性能求解。
缺点:范围可能比您想要的要大(?)。与GMTL相比,几何/渲染特定例程更少(即:欧拉角定义等)。
IMSL -
好处:非常完整的数字库。非常非常快(据说是最快的求解器)。迄今为止最大,最完整的数学API。商业支持,成熟且稳定。
缺点:成本-不便宜。很少有几何/渲染特定的方法,因此您需要在线性代数类的顶部滚动自己的方法。
NT2 -
好处:如果您习惯使用MATLAB,则可以提供更熟悉的语法。提供对大型矩阵等的完全分解和求解。
缺点:数学,而不是专注于渲染。可能不像本征那样出色。
手提包 -
好处:非常稳定,经过验证的算法。住了很久了。完整的矩阵求解等。模糊数学的许多选择。
缺点:在某些情况下,性能不那么出色。从Fortran移植,使用奇数API。
就我个人而言,这归结为一个问题-您打算如何使用它。如果您只专注于渲染和图形,那么我喜欢Generic Graphics Toolkit,因为它性能良好,并支持许多有用的开箱即用的渲染操作,而无需自己实现。如果您需要通用矩阵求解(即:大矩阵的SVD或LU分解),我将选择Eigen,因为它可以处理该问题,提供一些几何运算,并且对于大矩阵解决方案非常有效。您可能需要编写更多自己的图形/几何运算(在它们的矩阵/矢量之上),但这并不可怕。