数日以来、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   に答える