2013-07-09 51 views
1

我有一個項目,我正在努力,需要能夠顯示和與幾個不同的模型進行交互。其中一種觀點是全屏(iPad風景),其他則是較小的子視圖。是我目前整個運行的問題如下:Cocos3D 2.0和多個CCGLViews/GLViews

  1. 手動創建CCGLView並將其應用到共享導演會引發各種GL的錯誤,特別是具有與CCGLView的swapBuffers方法來做。

  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