我们当前的任务要求我们在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改变眼睛位置)。
答案 0 :(得分:0)
闪烁的原因是gluLookAt()函数在看起来不同的方向之间来回交换。