Je travaille sur un projet qui nécessite de créer une interface 2D rendue "sur top" ou un monde 3D. Sur certains autres forums, j'ai lu que vous pouviez utiliser "GluOrtho2D()" pour le travail, et revenir à GluPerspective() une fois que vous avez terminé. La seule chose est, mon code de test que j'ai écrit pour elle affiche seulement le monde 3D, pas le quad 2D. Lorsque je désactive le code de rendu 3D, cependant, le quad apparaît là où il était supposé être. J'ai réduit le code aux instructions openGL, que j'ai écrites ci-dessous. Le code est écrit en Python en utilisant la bibliothèque Pyglet.Problème avec la création d'une interface 2D dans un monde 3D openGL
Le code d'initialisation de la scène:
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/height, .1, 10000.)
glMatrixMode(GL_MODELVIEW)
glClearDepth(1.0)
glShadeModel(GL_FLAT)
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LEQUAL)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
Le cadre du code de rendu. L'appel à builder.buildMap() crée la scène 3D, et la paire glBegin-glEnd dessine un quad 2D:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
stage.set3DMode(window.width, window.height)
builder.buildMap()
stage.set2DMode(window.width, window.height)
glBegin (GL_QUADS)
glVertex2i(0, 0)
glVertex2i(0, 200)
glVertex2i(200, 200)
glVertex2i(200, 0)
glEnd()
la fonction stage.set3DMode:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
et la fonction stage.set3DMode :
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
J'espère vraiment que quelqu'un peut signaler mon erreur! Et je vous remercie de me aider :)
Parfait! Cela l'a réparé. Merci beaucoup! – Bartvbl