数日以来、Android OpenGL ES の四元数回転を実装しようとしています。input で関数を取得したいと思いますquaternion(x,y,z,w)
。この関数は、GL10
オブジェクトの回転を設定します。gl.glRotatef(y, 1.0f, 0.0f, 0.0f)
GL10 オブジェクトには、オイラー角で位置を設定する機能しかありません。そのクラスhttps://github.com/TraxNet/ShadingZen/blob/master/library/src/main/java/org/traxnet/shadingzen/math/Quaternion.javaを試してマトリックスを作成しましたが、それでも機能しません。パラメータとしてGL10オブジェクトの位置を設定する方法を誰かが示す/書くことができればありがたいですquaternion(GL10setRotation(Quaternion q)).
質問する
1206 次
1 に答える
3
glRotatef
現在の行列と回転行列の単純な乗算 (および関連する境界チェック) です。
OpenGL 1 でこれを行う 1 つの方法 (リンクされた Quaternion クラスを使用) は次のとおりです。
Matrix rotation = new Matrix();
quaternion.toMatrix(rotation);
glMultMatrixf(rotation.getAsArray(), 0);
glRotate
とは、行列の計算を自分で行ってを使用するよりglTranslate
も遅いことに注意してください。一般に、パフォーマンスが重要な場合は、OpenGL 1 を完全に使用しないことをお勧めします。glLoadMatrix
于 2013-04-15T13:10:42.070 に答える