Я читаю и загружаю файлы .obj, я хочу иметь 4 разных порта представления с разными перспективами, моя основная проблема заключается в том, чтобы сохранить исходный аспектный рацион объекта и предотвратить его от изменения с изменением размера окна или преобразований, таких как вращение.OPENGL - Поддерживать исходное соотношение сторон объекта
Это то, что я пытаюсь получить:
Это то, что я получаю (в полноэкранном режиме):
Часть моего кода дисплея:
GL2 gl = drawable.getGL().getGL3bc();
gl.glEnable(GL_DEPTH_TEST);
gl.glDepthFunc(GL_LEQUAL);
gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
gl.glOrtho(xMin - (0.1 * (xMax - xMin)), xMax
+ (0.1 * (xMax - xMin)), yMin - (0.1 * (yMax - yMin)), yMax
+ (0.1 * (yMax - yMin)), zMin - (0.1 * (zMax - zMin)), zMax
+ (0.1 * (zMax - zMin)));
gl.glMatrixMode(GL_PROJECTION);
gl.glViewport(0, 0, width/2, height/2);
gl.glLoadIdentity();
gl.glPushMatrix();
gl.glRotatef(-90f, 1f, 0f, 0f);
draw(gl);
gl.glPopMatrix();
gl.glViewport(width/2, height/2, width/2, height/2);
gl.glLoadIdentity();
gl.glPushMatrix();
gl.glRotated(-90, 0, 1, 0);
draw(gl);
gl.glPopMatrix();
gl.glViewport(0, height/2, width/2, height/2);
gl.glLoadIdentity();
gl.glPushMatrix();
draw(gl);
gl.glPopMatrix();
xMax, yMin - максимальное и минимальное значения оси x в точках, заданных в файле .obj. Высота и ширина - это текущие размеры окна.
Этот код зависит от переменных, которые вы не указали. Это звучит как простая ошибка в параметрах ортогонального представления относительно одной из осей. –
xMax, yMin - максимальное и минимальное значения оси x в точках, заданных в файле .obj. Высота и ширина - это текущие размеры окна. – MMrj