IOS 및 Android에서 세로 모드와 가로 모드를 변경할 때 문제가 있습니다. 둘 다 허용되는 인물 및 풍경 모드가 있습니다. SDL을 사용하여 방향 변경을 처리 중입니다. 카메라의 새로운 종횡비를 설정하고 새 해상도로 glViewport를 호출합니다. 내 경우 Portrait는 640x1136이고 Landscape는 역방향 1136x640입니다. 이것은 Portrait에서 모델이 Landscape에 비해 더 큰 최종 결과입니다. OpenGL ES 2.0의 인물 및 풍경 모드
여기서 코드의 중요한 부분이다.
float width = displayMode.w;
float height = displayMode.h;
float aspect = width/height;
m_pCamera->SetAspect(aspect);
glViewport(0, 0, width, height);
while(game->running)
{
while (SDL_PollEvent(&event)) {
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_RESIZED)
{
width = event.window.data1;
height = event.window.data2;
aspect = width/height;
m_pCamera->SetAspect(aspect);
glViewport(0, 0, width, height);
}
}
투영 행렬은 일반적으로 y 방향의 표시된 좌표 범위를 동일하게 유지하기 위해 계산됩니다. 귀하의 사진을 기반으로, 이것은 정확하게 당신이지고있는 것 같습니다. 그래서 그 의미에서 이것은 FAD (기능대로 설계된)의 경우입니다. 화면 방향을 변경 한 후 형상의 실제 크기가 동일하게 유지되는 것을 찾고 있습니까? –
그래, 오리엔테이션 변경 후 지오메트리의 크기를 유지하고 싶습니다. 이상적으로는 새 해상도를 자르고 객체의 크기를 유지하고 싶습니다. – sabotage3d