문제

나는 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 렌더링 사이를 전환 할 때 깊이 버퍼 설정을 사용해야 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top