2012-10-15 2 views
2

내 게임은 가로 방향 (화면 해상도 1024 * 768 - iPad 해상도)으로 설계되었습니다.PlayNOS 프리 모드

내 게임 장면이 PlayN (Android, html 등)이 지원하는 모든 플랫폼에서 올바르게 렌더링됩니다. iOS에서만 발생하는 문제입니다.

나는 장치 orientaton에 대한 내 응용 프로그램의 모든 정확한지를 실행하면 IOSPlatform.register(app, IOSPlatform.SupportedOrients.LANDSCAPES);

사용하여 아이 패드의 화면 해상도, 설정의 Info.plist 파일, 등록 된 플랫폼에 대한 모든 자원을 준비했습니다,하지만 게임 장면은 완전히 렌더링되지 않습니다. 768 * 768 해상도로 렌더링됩니다 (모든 장면 개체가 표시되는 것은 아니며 768 * 768 rect에 속하는 개체 만 표시됨) 나머지 화면 공간은 검은 색입니다.

나는 다음과 같은 방법으로 문제를 조사했습니다

  1. 적용 규모 rootLayer로 변환 (전체 장면이 렌더링되어 있는지 확인합니다). PlayN.graphics().rootLayer().setScale(0.75f, 0.75f); 결과 - 게임 장면이 768 * 768 rect에 맞고 모든 게임 장면 개체를 볼 수 있습니다.
  2. Applied translate를 rootLayer로 변환합니다 (PlayN이 768 * 768 rect 외부의 장면을 렌더링하지 않도록). PlayN.graphics().rootLayer().setTranslation(1024.0f - 768.0f, 0.0f); 결과 - 게임 장면이 번역되지만 768 * 768 화면 rect에 속하지 않는 개체는 표시되지 않습니다.

내 생각에 PlayN은 768 * 1024 화면 해상도 (기본 iPad 방향 해상도)에 맞게 그림 컨텍스트를 준비합니다. 화면을 렌더링 할 때 768 * 1024 사각형 외부에있는 객체는 잘립니다 (렌더링되지 않음).

어떤 이상한 행동을 유발할 수있는 도움이나 아이디어는 매우 감사하겠습니다.

감사합니다.

답변

1

문제는 다음에있다 :

  • 아이폰 OS 장치 회전 후 메인 윈도우 프레임과 루트 뷰 프레임을 변경하지 않습니다 (안드로이드는 않지만 - 나는 확인했습니다).
  • PlayN 코드는 회전 후보기 크기가 768 * 1024 (기본 방향)에서 1024 * 768로 변경되어야한다고 예상합니다.

실제 결과 : PlayN은 변환 매트릭스를 사용하여 게임 장면을 변환하지만

나는 코드의 다음 조각을 추가하여이 문제를 해결했습니다 (프레임 버퍼 크기는 여전히 1024 * 768)의 OpenGL 프레임 버퍼 크기를 변경하지 않습니다 ~ IOSGLContext :

@Override 
public void setSize (int width, int height) 
{ 
    if (UIDeviceOrientation.LandscapeLeft == orient || UIDeviceOrientation.LandscapeRight == orient) 
    { 
     Console.WriteLine("Swap IOSGLContext width and height for " + UIDeviceOrientation.wrap(orient)); 
     viewWidth = height; 
     viewHeight = width; 
    } 
    else 
    { 
     viewWidth = width; 
     viewHeight = height; 
    } 
    super.setSize(viewWidth, viewHeight); 
} 

이제 모든 것이 예상대로 작동합니다.

이 문제를 해결하는 방법을 어떤 다른 아이디어가 있다면 내가)

감사를 논의하기 위해 기꺼이 것입니다!

0

Google Play에서 최신 PlayN-1.5 스냅 샷을 다운로드하십시오 (Google 코드가 아닌 ->https://github.com/threerings/playn). 이 문제는 해당 버전에서 수정되었습니다