我是JOGL的新手,但是我在基础方面遇到了麻烦。我认为这与摄影机角度有关,但我不确定。我什至不知道是否所有这些代码甚至是必要的,或者是否需要更多。
它使最后绘制的侧面与第一个侧面重叠(如果背面在正面之后绘制,则背面与正面重叠)。它可能与深度或每帧后刷新变量有关。
轴应该穿过立方体的中心,但是由于某种原因,立方体被切除了,并且不能正确显示侧面。顶部的坐标是摄像机的“眼睛”位置(与gluLookAt()的前三个参数有关的浮动)。立方体是0,0,0中心的0.5X.5X.5(因此从每个轴延伸0.25)。
我还不能发布照片,所以这是我的截图:http://www.flickr.com/photos/64158328@N02/sets/72157628882982925/
我正在扩展JFrame并实现GLEventListener。这是来自构造函数的OpenGL代码:
GLCapabilities caps = new GLCapabilities(null);
caps.setRedBits(8);
caps.setGreenBits(8);
caps.setBlueBits(8);
caps.setAlphaBits(8);
caps.setDoubleBuffered(false);
caps.setHardwareAccelerated(true);
GLCanvas canvas = new GLCanvas(caps);
canvas.addGLEventListener(this);
canvas.addKeyListener(this);
add(canvas, BorderLayout.CENTER);
anim = new FPSAnimator(canvas, 60);
anim.setUpdateFPSFrames(10, null);
anim.start();
显示方法(以及立方体和轴代码):
GL2 gl = drawable.getGL().getGL2();
gl.glLoadIdentity();
GLU glu = new GLU();
glu.gluLookAt(eyeX, eyeY, eyeZ, 0, 0, 0, 0, 1, 0); // sets camera angle
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
初始化方法:
GL2 gl = drawable.getGL().getGL2();
gl.glClearColor(0, 0, 0, 0);
gl.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-1, 1, -1, 1, -1, 1);
重塑方法:
GL2 gl = drawable.getGL().getGL2();
gl.glViewport(0, 0, width, height);
最佳答案
我知道了,我需要启用GL_DEPTH_TEST
,并且需要使用glRotatef()
和glTranslatef()
而不是使用gluLookAt()
围绕相机旋转相机的整个世界。