我正在開發一個項目,該項目需要我創建一個呈現「頂部」或3D世界的2D界面。在其他一些論壇上,我讀到您可以使用「GluOrtho2D()」作爲工作,並在完成後切換回GluPerspective()。唯一的問題是,我爲它編寫的測試代碼僅顯示3D世界,而不是2D四邊形。但是,當我禁用3D渲染代碼時,四邊形會出現在應該出現的位置。 我調整了代碼以打開僅用於GL的語句,我在下面寫下了這些語句。代碼使用Pyglet庫以Python編寫。在3D OpenGL世界中創建2D界面的問題
現場初始化代碼:
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)
幀渲染代碼。到builder.buildMap()的調用創建三維場景,並且在glBegin-glEnd對繪製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()
的stage.set3DMode功能:
glDisable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluOrtho2D(0, width, 0, height)
glMatrixMode(GL_MODELVIEW)
和stage.set3DMode功能:
glEnable(GL_DEPTH_TEST)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, float(width)/float(height), .1, 10000.)
glMatrixMode(GL_MODELVIEW)
我真的很希望有人能指出我的錯誤!謝謝你對我的幫助:)
完美!這解決了它。非常感謝你! – Bartvbl 2010-11-26 23:46:20