java - JOGL 立方体问题入门

标签 java jogl

我是 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/

相关文章:

java - JOGL - 在大型数组缓冲区上调用 glMapBuffer 后性能低下

java - ConcurrentModificationException GL2/更新线程,带同步和迭代器

java - OpenGL:无论相机方向如何,如何使文本以相同像素显示?

java - AspectJ 未捕获所有方法

java - 从客户端 swing Java 应用程序记录到 ELK

java - 在 Java 中是否有解析 Json 的通用方法?

java - Groovy:如何解析 xml 并保留命名空间和 schemaLocations

java - 调整屏幕上绘制的图像的大小,而不更改 RGB 像素阵列的大小

c++ - 俯仰偏航,角度独立

java - 使用 JOGL 加载 .obj