iPhone矩阵乘法和反演

时间:2010-01-10 14:55:44

标签: iphone gpu matrix-multiplication matrix-inverse

我正在尝试将卡尔曼滤波器应用于从iPhone加速度计输出的数据。我需要尽可能快地执行矩阵乘法和反演,所以我很好奇使用GPU执行这两项任务的可能性。截至目前,我发现矩阵乘法只有一个参考:

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

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

即使很难用户也不确定这种乘法是在GPU内部执行的。对于反演,您是否有任何关于如何做(如果可能)的提示?

谢谢大家!

3 个答案:

答案 0 :(得分:5)

正如Kornel(和OpenGL FAQ)已经说过的那样,OpenGL没有提供矩阵求逆的实现。
This thread有一些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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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