2013-07-09 45 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