나는 장면에서 일정한 위치에 객체를 그려야하는 응용 프로그램을 만들지 만, 휴대 전화를 움직이면 카메라가보기를 변경해야하고 모든 객체를 볼 수 있어야합니다. 전화로 전체 회전).안드로이드 OpenGl 움직이는 카메라 및 그림 객체
난 내 onDrawFrame 방법에 gl.glMultMatrixf (rotationMatrix, 0)를 사용하여 다음의 작업을 완벽하게
@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();
}
을 (회전 행렬이 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' 함수는 여러분이 원점에 서서 _ (x, y, z) _를보고 있다고 말합니다. 센서로부터. 만약 당신이 세상에서 "걸어 다니고"싶다면 눈의 위치를 업데이트하기 위해서'gluLookAt'의 처음 세 매개 변수를 수정해야 할 것입니다. – radical7