因为几天我试图为Android OpenGL ES实现四元数旋转。我想通过输入quaternion(x,y,z,w)
获得函数。此函数将为GL10
对象设置旋转。 GL10对象仅具有gl.glRotatef(y, 1.0f, 0.0f, 0.0f)
功能,提供欧拉角中的设置位置。我尝试使用该类https://github.com/TraxNet/ShadingZen/blob/master/library/src/main/java/org/traxnet/shadingzen/math/Quaternion.java来创建Matrix,但它仍然不起作用。如果有人可以通过将参数quaternion(GL10setRotation(Quaternion q)).
答案 0 :(得分:3)
glRotatef
只是当前矩阵与旋转矩阵(以及相关的边界检查)的乘法。
在OpenGL 1中使用链接的Quaternion类的一种方法是:
Matrix rotation = new Matrix();
quaternion.toMatrix(rotation);
glMultMatrixf(rotation.getAsArray(), 0);
请注意glRotate
和glTranslate
为slower than doing the Matrix math yourself并使用glLoadMatrix
。一般来说,如果性能很重要,我建议不要完全使用OpenGL。