3

我正在尝试对来自 iPhone 加速度计的数据应用卡尔曼滤波器。我需要尽可能快地执行矩阵乘法和求逆,所以我很好奇使用 GPU 执行这两个任务的可能性。到目前为止,我只找到了一个矩阵乘法参考:

float mBone01[16] = { ... }
float mBone02[16] = { ... }
float mResult[16];

glMatrixMode  ( GL_MODELVIEW );
glLoadIdentity( );
glLoadMatrix  ( mBone01 );
glMultMatrix  ( mBone02 );
glGetMatrix   ( GL_MODELVIEW, mResult );

即使很难,用户也不确定这个乘法是在 GPU 内部执行的。您对如何(如果可能)对反转做同样的事情有任何提示吗?

谢谢你们!

4

3 回答 3

5

正如 Kornel(和OpenGL 常见问题解答)已经说过的,OpenGL 不提供矩阵求逆的实现。
这个线程有一些 C++ 实现,应该与 iPhone SDK 一起工作。
此外,通过调用 OpenGL API,您的代码不会在 GPU 上运行。
要使用 iPhone 的 GPU,您必须使用 OpenGL ES 2.0,目前仅适用于以下型号:

  • iPhone 3GS
  • 新 iPod touch 32GB
  • 新 iPod touch 64GB

Apple 有一个使用 OpenGL ES 2.0 和着色器的示例项目:http: //developer.apple.com/iphone/library/samplecode/GLES2Sample/index.html

于 2010-01-10T15:39:48.807 回答
2

在 GPU 上执行计算的唯一可靠方法是使用着色器

也就是说,OpenGL 和 GLSL 都没有用于计算逆矩阵的内置函数,您必须自己编写代码。

于 2010-01-10T15:05:08.737 回答
0

Google 代码上的vfpmathlibrary包含用于多个矩阵运算的快速 vfp 程序集,包括反转。仅仅因为会产生开销,这可能会胜过使用着色器。

于 2010-01-10T20:47:18.180 回答