0
我们当前的任务要求我们在openGL中使用较老的固定管道方法。我们正在使用LWJGL 2.9.3。以下代码显示一个三角形。问题是,它疯狂地闪烁。 Display.swapBuffers()方法不会抛出异常,并且如果包含它或不包含任何差异。我创建了一个基于关闭此StackOverflow的问题,这个例子:在openGL中闪烁简单的三角形渲染
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改变眼睛的位置)。
所以基本上你必须添加'glLoadIdentity()',然后发现'gluLookAt'看着错误的方向? – ybungalobill
是的。它看着错误的方向。如果眼睛在(0,0,0)处,并且观察点位于(0,1,0)处,则它正在向下看Y轴。多边形平行于X/Y平面。我把1放在错误的地方。 – AaronF