2013-07-09 2 views
1

나는 여러 다른 모델을 표시하고 상호 작용할 수 있어야하는 프로젝트를 진행하고 있습니다. 이 뷰 중 하나는 전체 화면 (iPad Landscape)이고 다른 하나는 작은 서브 뷰입니다. 특히 CCGLView의 swapBuffers 방법으로 할 필요,Cocos3D 2.0 및 다중 CCGLViews/GLView

  1. 수동으로 CCGLView 작성 및 공유 감독에 적용 GL 오류가 모든 종류의 원인이 다음과 같이 나는 현재에 걸쳐 실행하고있어 문제가 있습니다.

  2. Cocos3D의 디렉터는 UIViewController의 하위 클래스이기 때문에 또한 싱글 톤이기 때문에 복잡한 스택을 만들지 않고도 프로젝트에서 여러보기를 사용하여 현재보기 및 현재보기를 제어하는 ​​것은 매우 어렵거나 불쾌합니다 활성/표시해야합니다. 이러한 요인과 함께

, 프로젝트의 전체 계층 구조 (이것은 모든 사용자 정의 컨트롤을 사용하여 완전한 사용자 정의 특성을의에 의한), 나는 모든 다른 뷰 컨트롤러 사이의 탐색을 관리 할 수 ​​봉쇄 뷰 컨트롤러를 사용하는 데 프로젝트에서 GLView가 Cocos3D의 컨텍스트에서 상호 작용할 수있는 싱글 톤과 이것을 결합하면 엉망이되기 시작하는 곳을 알 수 있습니다.

누구에게 무엇을 할 지 제안이 있습니까? GLView의 인스턴스화에서 내가 잘못하고있는 것에 대한 아이디어가 있다면 적어도 시작일 것입니다.

_director = CocosViewController.sharedDirector; 
_director.supportedInterfaceOrientations = UIInterfaceOrientationMaskAll; 
_director.viewShouldUseStencilBuffer = NO;  // Set to YES if using shadow volumes 
_director.viewPixelSamples = 1;     // Set to 4 for antialiasing multisampling 
_director.animationInterval = (1.0f/kAnimationFrameRate); 
_director.displayStats = NO; 
[_director enableRetinaDisplay: YES]; 
CCGLView *glView = [CCGLView viewWithFrame:_director.view.frame 
           pixelFormat:kEAGLColorFormatRGBA8 
           depthFormat:0 preserveBackbuffer:NO 
           sharegroup:nil 
          multiSampling:NO 
          numberOfSamples:0]; 

glView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

[_director setCcGLView:glView]; 

단순히 작업하면 작동하지 않으며 OpenGL 오류 0x502 오류가있는 검은 화면이 표시됩니다.

답변

0

Cocos2D 2.0은 둘 이상의보기에서 작동하도록 설계되지 않았으며이 문제를 "수정"하는 것이 사소한 것입니다.

cocos3d에는 cocos2d가 필요하므로 운이 좋지 않습니다. 단일보기에 충실하십시오.

+0

즉석에서 CCGLView를 설정할 수 있습니까? 내가 제대로 초기화 할 수 있었던 유일한 방법은 내 CC3UIViewController 하위 클래스 내에서 loadView를 재정의하는 것입니다. 예를 들어 7 가지 '페이지'에서 7 가지 모델로 스크롤 뷰를 만들 계획입니다. 이제는 하나의 뷰만 확보 할 필요가 있다는 것을 알고 있지만 최소한 CCGLView를 즉시 설정할 수 있는지 또는 원래 인스턴스화 된 뷰를 재사용하면서 장면을 푸시하고 팝하는 내 자신의 방식을 만드는 것이 좋습니다. CC3UIViewController 싱글 톤 액세스에서 CCGLView? – dannyskim