2016-10-26 1 views
0

Notre affectation actuelle nécessite l'utilisation d'anciennes méthodes de pipeline fixe dans OpenGL. Nous utilisons LWJGL 2.9.3. Le code suivant affiche un triangle. Le problème est, il scintille comme un fou. La méthode Display.swapBuffers() ne génère pas d'exception et cela ne fait aucune différence si je l'inclue ou non. J'ai créé cet exemple à base de cette question StackOverflow:Scintillement sur un rendu triangulaire simple dans 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(); 
} 

EDIT

Une autre chose. Si j'appelle glLoadIdentity() après glMatrixMode (GL_MODELVIEW), c'est comme si la méthode gluLookAt() était ignorée. Je vois juste un écran noir vide si je fais ça. Mais si je ne le fais pas, il continue de se multiplier avec lui-même (si je change la position de l'oeil de 0,0,0).

Répondre

0

La raison du scintillement était que la fonction gluLookAt() faisait des allers-retours entre les différentes directions.

+0

Donc, fondamentalement, vous deviez ajouter 'glLoadIdentity()' et ensuite compris que 'gluLookAt' regardait dans la mauvaise direction? – ybungalobill

+0

Ouais. Il regardait dans la mauvaise direction. Si l'œil est à (0,0,0) et que le point d'observation est à (0,1,0), alors il regarde vers le bas sur l'axe Y. Le polygone était parallèle au plan X/Y. Je mets un 1 au mauvais endroit. – AaronF