2013-06-25 6 views
0

저는 지난 몇 개월 동안 iOS, OpenGL 기반 앱에서 작업 해 왔습니다. 이 시간 동안 스토리 보드를 사용하는 것과 달리 기본 UIWindow와 코드에서 단일 UIView를 모두 만들었습니다. 주목해야 할 중요한 사항은 UIView에서 상속받은 EAGLView (많은 Apple 예제에서 사용됨)의 인스턴스를 만드는 것입니다.iOS 앱 : 스토리 보드 기반 애플리케이션 내에서 OpenGL보기

내가 작업하고있는 코드 기반은 상당히 광범위하며 다른 것들 중에서도 별도의 렌더링 스레드를 사용합니다. 나는이 지점의 끝 부분에이 지점으로 돌아올 것이다.

이제 염두에두고 필자는 기본 UI 지원을 추가하려고합니다. 이렇게하려면 스토리 보드를 사용하고 있습니다 (처음으로). 현재 설정은 두 개의 버튼이있는 기본/루트보기로 구성됩니다. 각 단추는 모달 세구를 사용하여 화면에 새보기를 배치합니다.

가능한 한 많은 코드를 재사용하기 위해 필자는 IVE보기 유형이 EAGLView 유형 (UIView와 반대)임을 지정했습니다. 유일한 변경 사항은 "initWithFrame"으로 초기화하는 대신 "initWithCoder"로 초기화하는 것입니다.

스토리 보드로 이동하는 것 외에는 코드베이스의 다른 항목이 변경되지 않았습니다. 그러나, 내가 EAGLView로 갈 때 아무것도 렌더링되지 않습니다. 이미 작성한 기능 중 상당 부분을 복제하기 때문에 GLKit을 사용하는 것을 주저합니다 (스토리 보드를 사용하기 전에 모든 것을 잘 렌더링했습니다). 또한, GLKit은 렌더링을위한 콜백을 제공하는 반면, 별도의 렌더링 스레드를 제공합니다.

내 시나리오는 많은이 게시물처럼 들린다 :

OpenGL iOS view does not paint

나는 모든 호출 (또는 통화의 모든 그룹)에 대한 GL 오류 검사를 가지고 있고, 오류가보고되고있다. 더 이상 낯선 점은 (Xcode에서) 디버깅을위한 OpenGL ES 프레임을 캡처 할 때 디버거가 실제로 볼 것으로 예상되는 내용을 보여줍니다.

여기에 아이디어가 있습니까? 나는 곤두박질 친다.

답변

0

은 다음 시도하십시오 :

  1. 을 당신이 (시간 등 중지)에서 segueing있는 뷰에서 렌더링을 중지하는 것이 확인 - 당신은 단지 위에 새로운 EAGLView을 밀어 때문에이 뷰가 아직 살아 그것의.
  2. 새보기에서 OpenGL 상태를 디버그하려면 XCode's OpenGL ES Frame capture을 사용하십시오. 텍스처 또는 다른 객체에 바인딩이 누락되지 않았는지 확인합니다.
  3. 위의 코드가 작동하지 않으면 가장 간단한 렌더링 (예 : 간단한 쿼드)을 작성하고 해당 코드를 디버깅하십시오.