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