6

注意任何可以帮助我正确解决此问题的人都将获得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

现在,当我在原始项目中有一个场景时,不会发生这种情况,只是现在我使用了 2 个 CCScenes。因此,示例项目中的代码几乎是我原始项目的副本,因此其中的任何错误很可能会导致我在这里解决手头的问题,并希望摆脱那些 OpenGL 错误。

经过几个小时的测试和收集信息,我的问题似乎类似于:iOS and multiple OpenGL views。我也看过这个链接: 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 中,因为从技术上讲,我不会使用两个视图,它只是控制器之间的一个共享视图。这种方式可行吗?

4

2 回答 2

5

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

1. @Riq 告诉我,2013 年 5 月发布的 2.2 版将支持多个 CCDirector。所以请玩等待游戏,直到 2.2 测试版发布。更新:2.1 最终版自 6 月中旬以来已经发布,所以我猜 2.2 测试版应该会在一两个月内发布。

2.只需要一个 UIViewController 来保存 CCGLView。然后,无论我需要什么 UIViewController 中的 glView ,我都会使用addChildViewController(iOS 5+),并且我会在切换视图时保留 UIViewController 并在那时也执行 replaceScene (可能在 UIView 动画完成回调中)。我认为这种方式也可以,但我不确定它的效率。

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

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

于 2012-09-07T04:07:18.390 回答
0

Director 仅支持一种 gl 视图。您要做的是一些技巧,例如抓取 gl 视图的屏幕截图以制作一个 uiview,您可以使用其他 uiview 进行转换,然后在一个真正的导演上更改您的场景,然后将其转换回。

对多视图的支持正在开发中,但可能需要几个月的时间。

于 2012-08-31T00:01:53.477 回答