1

我有一个正在处理的项目,需要能够显示几个不同的模型并与之交互。这些视图之一是全屏(iPad 横向),其他视图是较小的子视图。我目前遇到的问题如下:

  1. 手动创建 CCG​​LView 并将其应用到共享导向器会导致各种 GL 错误,特别是与 CCGLView 的 swapBuffers 方法有关。

  2. 由于 Cocos3D 的 director 是 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 错误的黑屏。

4

1 回答 1

0

Cocos2D 2.0 并非设计用于处理多个视图,“修复”这个问题绝非易事。

由于 cocos3d 需要 cocos2d,所以你在这里不走运。坚持单一观点。

于 2013-07-09T21:42:04.040 回答