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