Estoy trabajando en un proyecto que requiere que cree una interfaz 2D renderizada "en la parte superior" o en un mundo 3D. En algunos otros foros, leí que podría usar "GluOrtho2D()" para el trabajo, y volver a GluPerspective() una vez que haya terminado. Lo único es que mi código de prueba que escribí solo muestra el mundo 3D, no el quad 2D. Sin embargo, cuando deshabilito el código de representación 3D, el quad aparece donde debería estar. Recorté el código para abrir solo las declaraciones, que anoté a continuación. El código está escrito en Python usando la biblioteca Pyglet.Problema al crear una interfaz 2D en un mundo 3D OpenGL
El código de inicialización escena: código de representación
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)
El bastidor. La llamada a builder.buildMap() crea la escena 3D, y el par glBegin-glEnd dibuja 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 función stage.set3DMode:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
y la función stage.set3DMode :
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
¡Realmente espero que alguien pueda señalar mi error! Y gracias por ayudarme :)
¡Perfecto! Eso lo solucionó ¡Muchas gracias! – Bartvbl