2008-12-02 8 views
4

OpenGL ES를 사용하여 2D 게임을하고 있습니다. 직교 투영을 사용하고 있습니다. 2D 투영을 쉽게하기 때문입니다. 이제는 간단한 3D 효과를 만들고 싶습니다. 예를 들어 스프레이를 Y 축을 중심으로 회전 시키면됩니다 (커버 플로우와 같은 것). 내가 올바르게 이해한다면, 이것은 정사 투영에서 할 수 없습니다. 나머지 코드를 엉망으로 만드는 일없이 가능합니까? 프레임 중간에서 투영을 전환하는 것처럼 현재 프레임 이미지를 배경으로 처리하고 배경 위에 3D 소재를 그립니 까?OpenGL을 사용하는 2D 게임에서의 3D 효과

답변

6

예, 가능합니다. 이전 투영 행렬을 저장하고 새 투영 행렬을로드 한 다음 이전 투영 행렬을 복원하기 만하면됩니다.

void DrawScene() 
{ 
    Draw2DStuff(); 

    glMatrixMode(GL_PROJECTION); 
    glPushMatrix(); // Save old projection matrix 
    gluPerspective(...); // Load new projection matrix 

    Draw3DStuff(); 

    glMatrixMode(GL_PROJECTION); 
    glPopMatrix(); // Restore old projection matrix 
} 

그냥 깊이 버퍼에주의 - 일이 제대로 그려 취득하기 위해 렌더링 2D와 3D 사이를 전환 할 때 깊이 버퍼 설정으로 놀러해야 할 수도 있습니다.