多个OpenGL视图(Cocos2D)

任何人可以帮助我正确地解决这个问题得到100点赏金

在我的应用程序中,我将UIKit和Cocos2D混合在一起,我使用addSubview和removeFromSuperview调用了一些简单的自定义视图animation。 我最近需要添加另一个CCScene到我的应用程序,以摆脱Cocos2D可以轻松处理的一些复杂的UIKit代码。 所以我在我的应用程序中有一个基本视图,它是一个UIViewController,它上面有一些button。 这些button背后是一个CCGLView,Cocos2D将会做任何事情。 这很好。 然后,当我想要去我的第二个视图控制器 (让我称之为我的游戏视图)后,我做了我的视图animation,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 

现在,当我在原始项目中有一个场景时,就不会发生这种情况,现在我只使用2个CCScenes。 所以在示例项目中的代码是我的原始项目的一个相当多的副本,所以在那里的任何错误将最有可能导致我在这里解决问题,并希望摆脱这些OpenGL错误。

经过几个小时的testing和收集信息,似乎我的问题类似于: 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

更新截至9/3/12 ,我目前只想联系iOS的Cocos2D背后的主要创build者@riq。 然而,在我这样做之前,每个人都确定没有办法只有一个CCGLView,我可以把它放在任何UIViewController中,因为从技术上讲,我不会使用两个视图,它只是一个控制器之间的共享视图。 这是可能的吗?

好吧,所以我发现我几乎有3个select

1. @Riq告诉我,支持多个CCDirectors将在2013年5月发布的2.2版本中发布。所以玩等待的游戏,直到2.2testing版出来。 更新 :自从6月中旬以来2.1版本已经出来了,所以我猜测2.2版beta应该在一两个月之内出来。

只需要一个UIViewController来保存CCGLView。 然后,无论UIViewController我需要glView在我将只使用addChildViewController (iOS 5 +),我只是保持UIViewController保留当我切换视图,只是在那个时候也(也许在UIViewanimation完成callback)replaceScene。 我这种方式也可以,但是我不确定它的效率。

编辑 :我已经使用和完全testing这个解决scheme,它似乎很好。 我build议这样做,直到2.2出来。 我的应用程序运行在60FPS,看起来不错。

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

导演只支持一个gl视图。 你想要做的是一些骗局,比如抓取你的gl视图的截图,制作一个uiview,你可以用你的其他uiviews进行转换,然后在一个真正的导演上改变你的场景,然后转换回来。

支持多个视图正在工作中,但可能还有几个月的时间。