闪烁在简单的三角形上呈现在openGL中

时间:2016-10-26 23:57:08

标签: java opengl rendering lwjgl doublebuffered

我们当前的任务要求我们在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改变眼睛位置)。

1 个答案:

答案 0 :(得分:0)

闪烁的原因是gluLookAt()函数在看起来不同的方向之间来回交换。