多个OpenGL视图(Cocos2D)

Sim*_*iwi 6 buffer views opengl-es cocos2d-iphone ios

注意:任何可以帮助我正确解决这个问题的人都能得到100分的赏金!

在我的应用程序中,我将UIKit与Cocos2D混合在一起,我使用addSubview和removeFromSuperview调用来做一些简单的自定义视图动画.我最近需要在我的应用程序中添加另一个CCScene,以摆脱Cocos2D可以轻松处理的一些复杂的UIKit代码.所以我在我的应用程序中有一个基本视图,它是一个带有一些按钮的UIViewController.在这些按钮后面是一个CCGLView,Cocos2D会做什么.这很好用.然后,当我想要进入我的第二个视图控制器(让我们称之为我的游戏视图)时,在我查看动画之后,调用viewdidload(这是我的导演初始化为第二个CCScene的地方)并且没有任何反应或者我得到控制台中的错误如下所示.现在在我的原始项目中,下面的错误就是我得到的,在这个示例项目中没有任何反应.这些是错误:

OpenGL error 0x0501 in DrawSolidPolygon 104
OpenGL error 0x0502 in DrawSolidPolygon 104
OpenGL error 0x0501 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0501 in -[CCParticleSystemQuad postStep] 411
OpenGL error 0x0506 in -[CCSprite draw] 532
OpenGL error 0x0502 in -[CCParticleSystemQuad draw] 434
OpenGL error 0x0502 in -[CCSprite draw] 532
OpenGL error 0x0502 in -[CCSprite draw] 532
Run Code Online (Sandbox Code Playgroud)

现在,当我在原始项目中有一个场景时,就会发生这种情况,现在我只使用了2个CCScenes.所以示例项目中的代码是我原始项目的几乎所有副本,所以在那里有任何错误都很可能导致我在这里修复问题并希望摆脱那些OpenGL错误.

经过几个小时的测试和收集信息,似乎我的问题类似于:iOS和多个OpenGL视图.我也看到了这个链接:http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit.但是这两个链接对我没有任何意义,因为我不知道如何将它与Cocos2D联系起来.我认为整个问题是当前版本的Cocos2D的限制,但如果有人可以下载我的项目并以某种方式将这两个链接的修复应用到我的项目并完全修复它,那将是很好的,并将修复我的所有问题!

现在我的项目中的Cocos2D版本是2.0版本的最新版本.如果有人能够下载项目,看看我做错了什么,我认为这将解决我和其他遇到类似问题的人的问题.

以下链接是我的问题的示例项目的下载链接:http://www.gogofile.com/Default.aspx?p = sc& ID = 634818635814123750_4340

更新截至2012年9月3日,我目前正在考虑联系@riq,它是Cocos2D for iOS背后的主要创建者.然而,在我这样做之前,每个人都确定没有办法只有一个CCGLView,我可以只在任何UIViewController中填充它,因为从技术上讲我不会使用两个视图,它只是控制器之间的一个共享视图.这种方式可行吗?

Sim*_*iwi 5

好的,所以我发现我几乎有3个选择:

1. @Riq告诉我,对于多个CCDirector的支持将在2.2版本中发布,该版本将于2013年5月发布.所以请等待游戏直到2.2 beta发布.更新:2.1决赛已经从6月中旬开始,所以我猜测2.2 beta应该在一两个月内出来.

2.只需要一个包含CCGLView的UIViewController.然后无论我需要什么UIViewController我都会使用glViewaddChildViewController(iOS 5+),我只是在切换视图时保留UIViewController,并且当时也做了replaceScene(也许在UIView动画完成回调中).我认为这种方式也有效,但我不确定它的效率.

编辑:我已经使用并完全测试了这个解决方案,它看起来效果很好.我建议这样做直到2.2出来.我的应用程序以60FPS运行,看起来不错.

3.我个人没有尝试过任何这些链接/拉取请求,也没有@Riq,所以这将是我的最后选择.http://www.cocos2d-iphone.org/forum/topic/33480 http://www.cocos2d-iphone.org/forum/topic/17821