Java Android OpenGl移动相机和图形对象

Java Android OpenGl移动相机和图形对象,java,android,opengl-es,camera,rotation,Java,Android,Opengl Es,Camera,Rotation,我正在创建一个应用程序,它应该在场景中的固定位置绘制对象,但当我移动手机时,相机应该改变视图,我应该看到周围的所有对象(当我使用手机进行完全旋转时) 当我在onDrawFrame方法中使用gl.glMultMatrixf(rotationMatrix,0),然后绘制对象的工作状态时(旋转矩阵从SensorManager获得) 但当我尝试使用: GLU.gluLookAt( gl, 0.0f, 0.0f, 0.0f, x, y, z, 0.0f, 1.0f, 0.0f ); gl

我正在创建一个应用程序,它应该在场景中的固定位置绘制对象,但当我移动手机时,相机应该改变视图,我应该看到周围的所有对象(当我使用手机进行完全旋转时)

当我在onDrawFrame方法中使用gl.glMultMatrixf(rotationMatrix,0),然后绘制对象的工作状态时(旋转矩阵从SensorManager获得)

但当我尝试使用:

    GLU.gluLookAt( gl, 0.0f, 0.0f, 0.0f, x, y, z, 0.0f, 1.0f, 0.0f ); 
    gl.glPushMatrix();
    //draw object
    pyramid.draw(gl);

我的对象始终在屏幕上的同一位置,并跟随摄影机的移动。在第二个示例中,我做错了什么?

我认为您不清楚glulookat()实际上做了什么。您需要一个表示glulookat的矩阵(currentrotationmatrix,mylocation.x,mylocation.y,mylocation.z,whereImlooking.x,whereImlooking.y,whereImlooking.z,upvector.x,upvector.y,upvector.z)


因此,使用该代码,您告诉opengl旋转所有内容(假设代码仍然存在),然后您说“我在原点(0.0、0.0、0.0)并查看xyz”(不确定您的情况下xyz是什么,或者您试图实现什么效果)。

您的
gluLookAt
函数表示您站在原点并查看(x,y,z),我猜这是来自传感器。如果你还想在你的世界里“行走”,你需要修改
gluLookAt
的前三个参数来更新眼睛的位置。
    GLU.gluLookAt( gl, 0.0f, 0.0f, 0.0f, x, y, z, 0.0f, 1.0f, 0.0f ); 
    gl.glPushMatrix();
    //draw object
    pyramid.draw(gl);