我是 JOGL 新手,但我在基础知识上遇到了困难。我认为这与相机角度有关,但我不确定。我什至不知道所有这些代码是否必要或者我是否需要更多。
它使最后绘制的边与第一个边重叠(如果背面是在前面绘制的,则背面与前面重叠)。它可能与深度或每帧后刷新变量有关。
轴应该穿过立方体的中心,但立方体由于某种原因被切断并且无法正确显示侧面。顶部的坐标是相机“眼睛”位置(与 gluLookAt() 前 3 个参数相关的浮点)。立方体大小为 0.5X.5X.5,以 0,0,0 为中心(因此从每个轴延伸 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);
reshape 方法:
GL2 gl = drawable.getGL().getGL2();
gl.glViewport(0, 0, width, height);
最佳答案
我明白了,我需要启用 GL_DEPTH_TEST
并且需要使用 glRotatef()
和 glTranslatef()
围绕相机旋转世界> 而不是使用 gluLookAt()
在世界各地移动相机。
关于java - JOGL 立方体问题入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872354/