3

iPhone 加速度計から出力されるデータにカルマン フィルターを適用しようとしています。行列の乗算と逆行列をできるだけ速く実行する必要があるため、GPU を使用してこれら 2 つのタスクを実行できる可能性に興味がありました。今のところ、行列の乗算に関するリファレンスは 1 つしか見つかりませんでした。

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 FAQ ) が既に述べたように、OpenGL は逆行列の実装を提供しません。
このスレッドには、iPhone SDK で動作するはずの C++ 実装がいくつか含まれています。
また、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 に答える