Pracuję nad projektem, który wymaga utworzenia interfejsu 2D renderowanego "na wierzchu" lub w świecie 3D. Na niektórych innych forach przeczytałem, że możesz użyć "GluOrtho2D()" dla zadania i powrócić do GluPerspective(), gdy skończysz. Jedyną rzeczą jest to, że mój kod testowy, który napisałem, wyświetla tylko świat 3D, a nie 2D. Kiedy jednak wyłączam kod renderowania 3D, quad pojawia się tam, gdzie powinien. Wyciąłem kod do instrukcji openGL, które zapisałem poniżej. Kod jest napisany w Pythonie przy użyciu biblioteki Pyglet.Problem z tworzeniem interfejsu 2D w świecie 3D OpenGL
Scena kod inicjujący:
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)
Rama kod renderowania. Wezwanie do builder.buildMap() tworzy scenę 3D, a para glBegin-glEnd rysuje 2D Quad:
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()
funkcja stage.set3DMode:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
a funkcja stage.set3DMode :
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
Naprawdę mam nadzieję, że ktoś może wskazać mój błąd! I dziękuję za pomoc :)
Idealny! To naprawiło to. Dziękuję Ci bardzo! – Bartvbl