快速、便携的C++数学库,用于矩阵和向量操作。

3
我有自己的游戏引擎,使用OpenGL和C++编写。我也有自己的矩阵和向量处理数学库。我一直对自己的数学库性能有所疑虑,因此最近决定寻找一些被许多游戏/图形开发人员使用的流行数学库。令人惊讶的是,我找不到什么。
StackOverflow上的人在类似的帖子中建议GLM和Eigen库,因此我进行了一些性能测试。我将两个大小为4x4的矩阵相乘1000000次,并且这里是结果:
GLM: 4.23 seconds
Eigen: 12.57 seconds
My library: 0.25 seconds

我对这些结果感到惊讶,因为我的矩阵乘法实现来自维基百科。我查看了glm和eigen的代码,发现有很多typedef、断言和其他类型检查,这些不必要的代码大大降低了性能。

所以,我的问题是: 你知道任何适用于游戏开发/图形目的的快速数学库吗?我需要的功能如下:创建平移、旋转、投影、矩阵*矩阵、求逆、观察矩阵、矩阵*向量、四元数等...


Armadillo是一个选项。 - stanekam
并不是非常有用,但通常需要的人会自己编写。或者它只是一个更大框架的一部分,比如游戏引擎。它确保你知道自己在做什么 :) 我记得 Carmack 说过,他每次开始新项目时都会编写新的矩阵和向量代码。 - starmole
1个回答

2
我查看了glm和eigen的代码,发现有很多typedefs、assertions和其他类型检查的无用代码,这些代码会大幅降低性能。
您确定已经开启了更高的编译器优化,并且不是在调试模式下进行测试的吗?
另一个选择是来自Google的MathFu。 http://google.github.io/mathfu/

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