2011-04-06 3 views
4

기본 iPad (또는 iPhone, iPod Touch) 화면에서 OpenGL ES를 사용하여 렌더링하고 있는데, 내용이 "이동하다"는 외부 화면에서 렌더링하고 싶습니다. 사용자가 외부 화면을 연결하자 마자 외부 화면으로 이동합니다 (외부 화면이 분리되었을 때 주 화면으로 다시 이동합니다). OpenGL을 호출하는 라이브러리를 사용합니다 (최소한 EAGL 및 CAEAGL과 같은 플랫폼 독립적 인 라이브러리는 사용하지만 거의 상태가 아닙니다). 성능 향상, 유지 보수 측면에서 최선의 방법은 무엇입니까?iOS의 OpenGL ES 및 외부 디스플레이

  • I 따라서 두 드로어 블을 가지고, 나는 그것을 지원하는 것 생각하지 않으며,이 경우에도, 나는 단지
  • 그렇지 않으면 새 창으로 CAEAGLLayer 백업보기를 통해 이동하는 것이 좋습니다 생각하지 않습니다 . 하나의 EAGLContext를 유지하고 주 화면의 CAEAGLLayer에서 분리해야하며 외부 디스플레이의 CAEAGLLayer에 연결해야합니다 (그리고 사용자가 외부 디스플레이를 분리 할 때 반대).
  • 두 개의 컨텍스트가 있어야하며 동일한 래퍼 라이브러리 인스턴스를 계속 사용해야합니다 (따라서 다시 구성해야합니다. 그래도 다른 컨텍스트로 인해 컨텍스트를 유지하더라도 어느 정도 확장되어야합니다.) 비율, 픽셀 종횡비 등)
  • 컨텍스트 당 두 개의 컨텍스트와 래퍼 라이브러리 인스턴스가 있어야합니다 (장점은 사용자 지정 CAEAGLLayer 기반 UIView의 라이브러리 인스턴스를 만들 수 있다는 것입니다).
  • 두 개의 컨텍스트를 사용해야하지만 일부 자원을 공유 할 수 있도록 공유 그룹을 사용해야합니까?

(권장 사항이 하나있는 경우) Apple은 무엇을 권장합니까? 그리고 어떻게 그 일을 했습니까 (흔하지 않은 기능입니다).

+0

일주일 및 답변 없음. FWIW, 나는 당분간 두 가지 드로어 블, 하나의 컨텍스트로 가기로 결정했다. –

답변

4

하나의 컨텍스트와 두 개의 드로어 블에서 매우 잘 작동합니다. 예전의 CAEAGLLayer에서 분리하기 전에 renderbuffer를 파괴하기 위해서주의를 기울여야하고 새로운 하나를 새로운 CAEAGLLayer으로 재 할당하면됩니다. 이를위한 대부분의 코드는 Xcode의 OpenGL ES 앱 템플릿의 EAGLView 클래스에서 제공됩니다. 그리고 물론 새로운 레이어의 크기로 OpenGL을 그리는 객체를 다시 구성해야합니다.

+1

감사합니다. 미래의 저! 이전에 그걸 알았 으면 좋았을 텐데 ... –

0

Apple은 제공되는 GLAirplay라는 훌륭한 샘플 프로젝트를 보유하고 있습니다.

here을 찾을 수 있습니다.

+0

그때 그랬 으면 좋겠다. –