【发布时间】:2014-11-22 21:48:22
【问题描述】:
我正在读取和加载 .obj 文件,我想拥有 4 个不同的视口,它们都具有不同的视角,我的主要问题是试图保持对象的原始纵横比并防止它随着窗口重新大小而改变或旋转等变换。
这就是我想要得到的:
这就是我得到的(全屏):
我的显示代码的一部分:
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 是 .obj 文件中给定点中 x 轴的最大值和最小值。 高度和宽度是窗口的当前尺寸。
【问题讨论】:
-
该代码取决于您未显示其定义的变量。对于其中一个轴,这听起来像是正交视图参数中的一个简单错误。
-
xMax,yMin 是 .obj 文件中给出的点中 x 轴的最大值和最小值。高度和宽度是窗口的当前尺寸。