OpenGL - одинаковые размеры на нескольких устройствах - PullRequest
3 голосов
/ 28 июля 2011

Я хочу, чтобы мой квадрат соответствовал ширине экрана.Мне удалось сделать это на моем устройстве следующим образом:

@Override
public void onDrawFrame(GL10 gl) {
    // Clears the screen and depth buffer.
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glClearColor(1f, 1f, 1f, 1f);
    // Replace the current matrix with the identity matrix
    gl.glLoadIdentity();

    gl.glTranslatef(0f, 0f, -1.6f);

    new Plane(1f,1f).draw(gl);
}

Итак, мой самолет имеет ширину 1ф и высоту 1ф.Перемещая деталь в экран 1.6f, квадрат точно соответствует ширине экрана.Но на других устройствах квадрат становится слишком большим и частично падает за пределы экрана.

Как мне подогнать ширину квадрата к ширине экрана?

1 Ответ

0 голосов
/ 28 июля 2011

Я только начинаю на android и openGL, так что могут быть некоторые вспомогательные классы, о которых я не знаю.

Проблема в IMO в соотношении сторон (aspectRatio = screenWidth / screenHeight). Это зависит от устройства, что вызывает проблему плоскости, покидающей экран. Вы должны масштабировать все, основываясь на соотношении сторон, или создать какое-либо окно, которое будет всегда по всей ширине экрана, но изменяется по высоте (высота регулируется в зависимости от того, какое соотношение сторон вы хотите иметь).

Если вы используете идентификационную проекцию и камеру, я думаю, что вы остаетесь в пространстве NDC (или что-то в этом роде), поэтому, если вы визуализируете квад в этом пространстве с ребрами в -1 или +1, вы должны заполнить весь экран с помощью квад.

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