Работает на эмуляторе, а не на телефоне - PullRequest
0 голосов
/ 22 июня 2010

Этот код:

public void onSurfaceChanged(GL10 gl, int w, int h) {

gl.glViewport(0, 0, w, h);// 
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();    
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
// set camera zoom
GLU.gluPerspective(gl, 45.0f,(float) w / h, 0.1f, 100.0f);
// point camera
GLU.gluLookAt(gl, 0, 1, 5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
}
public void onDrawFrame(GL10 gl) {
// clear last frame
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// set model and projection matrices to identity
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 1, 5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);    
square.draw(gl);
}

работает должным образом на эмуляторе (на виртуальном устройстве Android 2.1), но на телефоне (HTC Desire Android 2.1) он просто очищает экран, не видит ничего нарисованного.Если я закомментирую

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 1, 5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

, он будет работать на телефоне, но не в том случае, если у меня вызов gluLookAt в onDrawFrame.

В чем проблема с gluLookAt в onDrawFrame?

1 Ответ

0 голосов
/ 22 июня 2010

Вам не нужно вызывать

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();

каждый кадр.Если вы используете GLU.gluLookAt(), он должен справиться со всем этим.Конечно, очистка матрицы проекции не должна вызывать проблем, но, возможно, происходит какая-то оптимизация, которая приводит к ее поломке.Что произойдет, если вы закомментируете эти две строки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...