【发布时间】:2016-10-27 08:21:50
【问题描述】:
我们当前的任务要求我们在 openGL 中使用旧的固定管道方法。我们使用的是 LWJGL 2.9.3。以下代码显示一个三角形。问题是,它像疯了一样闪烁。 Display.swapBuffers() 方法不会抛出异常,我是否包含它也没有任何区别。我根据这个 StackOverflow 问题创建了这个示例:
gluPerspective, glViewport, gluLookAt and the GL_PROJECTION and GL_MODELVIEW Matricies
glViewport(0, 0, Display.getWidth(), Display.getHeight());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 10, 0, 10, -1, 100);
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT);
gluLookAt(0, 0, 0, 0, 0, 1, 0, 1, 0);
glBegin(GL_POLYGON);
glVertex3d(1, 1, 1);
glVertex3d(1, 5, 1);
glVertex3d(5, 5, 1);
glEnd();
glFlush();
try {
Display.swapBuffers();
} catch (Exception e) {
e.printStackTrace();
}
编辑
另一件事。如果我在 glMatrixMode(GL_MODELVIEW) 之后调用 glLoadIdentity(),就好像 gluLookAt() 方法被忽略了。如果我这样做,我只会看到一个空白的黑屏。但如果我不这样做,它会不断地与自身相乘(如果我将眼睛位置从 0,0,0 更改)。
【问题讨论】:
标签: java opengl rendering lwjgl doublebuffered