//这些是盒子的三个平面
// first plane
gl.glVertex3i(0, 30, 30);
gl.glVertex3i(10, 30, 30);
gl.glVertex3i(10, 20, 30);
gl.glVertex3i(0, 20, 30);
//2nd Plane
gl.glVertex3i(20, 20, 37);
gl.glVertex3i(30, 20, 37);
gl.glVertex3i(30, 10, 37);
gl.glVertex3i(20, 10, 37);
//3rd Plane
gl.glVertex3i(40, 10, 45);
gl.glVertex3i(50, 10, 45);
gl.glVertex3i(50, 0, 45);
gl.glVertex3i(40, 0, 45);
//这是关注代码。
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(
35, 15, 10,
25, 15, 30,
0, 1, 0
);
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-50.0, 50.0, -30.0, 30.0, 0.0, 60.0);
答案 0 :(得分:2)
您需要使用透视投影,而不是正投影。
而不是打电话
gl.glOrtho(-50.0, 50.0, -30.0, 30.0, 0.0, 60.0);
您应该能够用
替换该行GLU glu = new GLU();
glu.gluPerspective(60.0, 4.0/3.0, 1.0, 100.0);
我提供的参数可能不适合您的程序,因此您可能需要调整它们。
参数依次为:fovy,aspect,zNear和zFar。
来自manpage:
fovy:指定y中视角的范围(以度为单位) 方向。
方面:指定确定视野的宽高比 在x方向。纵横比是x(宽度)与y的比率 (高度)。
zNear:指定从查看器到近剪裁的距离 飞机(总是积极的)。
zFar:指定从查看器到远剪裁平面的距离 (总是积极的。)
GLU课程位于此处
import javax.media.opengl.glu.GLU