OpenGL Viewport внутри Viewport

Я создаю лабиринт в OpenGL, и я пытаюсь создать миникарту. Для этого я подумал о создании области просмотра внутри области просмотра. У меня есть три метода, один для создания стен, другой для пола, а другой для мини-карты. Стены и пол идут в основном окне просмотра, а миникарта — во втором окне просмотра. Я использую списки отображения для создания стен и пола. Я могу создать оба видовых экрана, но моя проблема в том, что я не знаю, где вызвать метод для создания мини-карты.

Я не знаю, поможет ли это, но вот мой метод отображения списка:

void createDisplayLists(int janelaID)
{
//Creates the walls
modelo.labirinto[janelaID] = glGenLists(2);
glNewList(modelo.labirinto[janelaID], GL_COMPILE);
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT);
desenhaLabirinto();
glPopAttrib();
glEndList();

//Creates the floor
modelo.chao[janelaID] = modelo.labirinto[janelaID] + 1;
glNewList(modelo.chao[janelaID], GL_COMPILE);
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT);
desenhaChao(CHAO_DIMENSAO, modelo.texID[janelaID][ID_TEXTURA_CHAO]);
glPopAttrib();
glEndList();
}

0

Решение

OpenGL — это не граф сцены, это API рисования на основе состояния. Вещи превращаются в пиксели в тот момент, когда вы выполняете вызовы (фактически; на практике все складывается и выполняется асинхронно, но для случая это не имеет значения).

Итак, суть этого такова:

draw_stuff_into_viewport_A():
glViewport(viewport_A)
setup_projection(project_A)
draw_A_stuff()

draw_stuff_into_viewport_B():
glViewport(viewport_B)
setup_projection(project_B)
draw_B_stuff()

display():
glClear(...)

draw_stuff_into_viewport_A()
draw_stuff_into_viewport_B()

swapBuffers()
1

Другие решения


По вопросам рекламы [email protected]