2015-01-06 3 views
0

OpenGL에서 미로를 생성하고 있으며 미니 맵을 만들려고합니다. 이를 위해 뷰포트 내부에 뷰포트를 만드는 방법을 생각했습니다. 세 가지 방법이 있습니다. 하나는 벽 만들기, 다른 하나는 바닥 만들기, 다른 하나는 미니 맵 만들기입니다. 벽과 바닥은 주 뷰포트에 있고, 미니 맵은 두 번째 뷰포트에 있습니다. 디스플레이 목록을 사용하여 벽과 바닥을 만듭니다. 두 뷰포트를 모두 만들 수는 있지만 문제는 미니 맵을 만드는 방법을 어디에서 호출해야할지 모르겠다는 것입니다.뷰포트 내부의 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(); 
} 
+1

는 OpenGL을에 올 때 당신은 내가 초보자 해요 –

+0

렌더링 당신이 앞뒤로지도 지역 전체 화면 사이에 교환해야합니다/그것을인가 더 잘 설명 할 수 있을까요? –

답변

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() 
+0

두 개의 뷰포트를 모두 만들었 기 때문에 내 질문이 변경되었지만 뷰포트 내부에서 뷰포트를 사용하는 방법과 관련하여 여전히 문제가 있습니다 –

+0

@AdamSilva : 뷰포트 내부에서 * 뷰포트로 생각하지 마십시오. 하나의 뷰포트에 처음으로 드로잉 한 다음 다른 뷰포트에 드로잉 한 다음 그 아래에있는 모든 것을 오버 드로 렌더링합니다. 미니 맵 뷰포트의 영역을 먼저 지우려면 가위 테스트 ('glEnable (GL_SCISSOR_TEST);'와 뷰포트와 동일한 매개 변수로 'glScissor'호출)를 결합해야합니다. 하지만 본질적으로 기존 사진의 일부를 과장하고 있습니다. – datenwolf