我是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()围绕相机旋转相机的整个世界。

08-28 22:01