我正在創建一個應用程序,它應該在場景中的不變位置繪製對象,但是當我移動手機時,相機應該改變視圖,並且應該看到周圍的所有對象(當我用手機做全面旋轉)。Android OpenGl移動相機和繪圖對象
當我在onDrawFrame方法使用gl.glMultMatrixf(rotationMatrix,0),然後繪製(從獲得的SensorManager旋轉矩陣),它的工作完美
@Override
public void onDrawFrame(GL10 gl) {
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glMultMatrixf(rotationMatrix, 0);
gl.glTranslatef(0f, 0f, -10f);
//draw object
pyramid.draw(gl);
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
GLU.gluPerspective(gl, 45.0f, (float) width/(float) height, 0.1f, 100.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
}
對象,但是當我嘗試使用:
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'函數說你站在原點,看着_(x,y,z)_,我猜測它正在進入來自傳感器。如果您還想在您的世界中「漫步」,則需要修改「gluLookAt」的前三個參數以更新眼睛的位置。 – radical7