JOGL多维数据集问题入门

时间:2012-01-15 18:44:52

标签: java jogl

我是JOGL的新手,但我遇到了基础问题。我认为这与摄像机角度有关,但我不确定。我甚至不知道所有这些代码是否必要或者我是否需要更多代码。

它使最后绘制的边与第一个边重叠(如果背面在正面之后绘制,背面与正面重叠)。它可能与深度有关,或者在每帧之后刷新变量。

轴应该穿过立方体的中心,但由于某种原因立方体被切断,并且不能正确显示边。顶部的坐标是摄像机“眼睛”位置(与gluLookAt()前3个参数相关的浮点数)。立方体是.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);

init方法:

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);

1 个答案:

答案 0 :(得分:2)

我明白了,我需要启用GL_DEPTH_TEST我需要使用glRotatef()glTranslatef()围绕相机旋转世界,而不是使用gluLookAt()来移动相机世界各地。