OpenGL을 사용한 2D 게임에서 3D 효과
-
22-07-2019 - |
문제
나는 OpenGl es를 사용하여 2D 게임을하고 있습니다. 2D 재료를 쉽게 만들기 때문에 직교 투영을 사용하고 있습니다. 이제 간단한 3D 효과를 만들고자합니다. 즉, y 축을 중심으로 스프라이트를 회전 시키십시오 (덮개 흐름과 같은). 내가 올바르게 이해한다면, 이것은 오르토 프로젝션에서는 할 수 없습니다. 코드의 나머지 부분을 엉망으로 만들지 않고 할 수 있습니까? 프레임 중간의 투영을 전환하는 것처럼 현재 프레임 이미지를 배경으로 취급하고 배경 위에 3D 물건을 그립니다.
해결책
예, 이것은 가능합니다. 이전 프로젝션 매트릭스를 저장하고 새 행렬을로드하고 완료되면 이전 매트릭스를 복원하십시오.
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 렌더링 사이를 전환 할 때 깊이 버퍼 설정을 사용해야 할 수도 있습니다.
제휴하지 않습니다 StackOverflow