我有兴趣在 JOGL 2 中编写一个 OpenGL 应用程序,使用着色器而不是固定功能管道。我需要在 CPU 端做一些 4x4 double 矩阵数学运算,以替换固定功能管道的推送/弹出/转换业务。同一个应用程序还将包含一些需要对大型矩阵进行操作的机器学习代码。我已经查看了 JBLAS 的机器学习内容(并且由于我已经将 JNI 用于 JOGL,所以依赖另一个 native 库的缺点很小),但我不确定它是否是 GL 的最佳选择-相关矩阵。想法?
最佳答案
你只需要操作 4x4 矩阵吗?大多数通用线性代数库都针对大型矩阵进行了高度优化,而很少关注较小的矩阵。我写 EJML 的部分原因是为了解决这个问题并激励其他开发人员针对小矩阵进行优化。 EJML 对于小矩阵来说是最快的,但也有可能做得更好。
如果您真的需要很多性能,我不会使用任何常见的怀疑,而是推出您自己的高度特化的代码。应该有可能多次击败通用库。
2x2 矩阵的简单示例:
public class Matrix2x2 {
double a11,a12,a21,a22;
}
public static void mult( Matrix2x2 a , Matrix2x2 b , Matrix2x2 c ) {
c.a11 = a.a11*b.a11 + a.12*b.a21;
c.a12 = a.a11*b.a12 + a.12*b.a22;
c.a21 = a.a21*b.a11 + a.22*b.a21;
c.a22 = a.a21*b.a12 + a.22*b.a22;
}
注意我没有尝试编译这段代码,它只是一个例子。
关于java - 适用于 JOGL + 通用矩阵数学的快速 Java 矩阵库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312329/