Я работаю над проектом, который требует создания 2D-интерфейса, отображаемого "сверху", или трехмерного мира.На некоторых других форумах я читал, что вы можете использовать «GluOrtho2D ()» для этой работы и вернуться к GluPerspective (), как только вы закончите.Единственное, мой тестовый код, который я написал для него, отображает только трехмерный мир, а не двумерный четырехугольник.Однако, когда я отключаю код 3D-рендеринга, квад появляется, где он должен был быть.Я сократил код до операторов openGL only, которые я записал ниже.Код написан на Python с использованием библиотеки Pyglet.
Код инициализации сцены:
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 рисует двумерный квад:
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)
Я действительно надеюсь, что кто-то может указать на мою ошибку!И спасибо, что помогли мне:)