2013-05-09 57 views
1

我正在使用Kobold2D/cocos2D为iOS制作2D游戏。现在我决定尝试添加一些3d建筑物(认为GTA1/2的一切都是2D,除了建筑物)。我可以在iOS上将正常的OpenGL ES 2.0与Kobol2D/cocos2d混合吗?

我知道OpenGL是如何工作的,但是当尝试实现这个时,我得到各种各样的错误。

我的问题是: cocos2d是否阻止我使用正常的OpenGL调用?或者如果它正确地完成,它应该工作正常吗?我找到的每个教程/例子都使用了一些cocos2d包装来混合opengl和cocos。

如果你之前做过这些(将自己的OpenGL ES 2.0代码与cocos2d混合在一起),你能指出我的方向吗?

回答

1

只要您使用的是cocos2d/Kobold2D v2.x,您就可以使用OpenGL ES 2.0。你可以覆盖/实现任何CCNode类的方法并破解掉。

只有一个警告:您应该更喜欢使用cocos2d提供的“ccStuffStuff”方法(例如ccDrawColor)而不是OpenGL ES方法,因为它们出于性能原因和兼容性而将其包含在幕后。查看任何现有的cocos2d绘图代码。其中一个例子是来自cocos2d + Box2D项目的GLES-Render.cpp或ccDrawingPrimitives.m文件。

+0

Bah,这个家伙对Cocos2D有什么了解...完全可笑,哈哈。看看他的书,它有关于这个主题和他之间的一些很好的信息,Riq和Ray他们是要求或参考的人。 ;-) – 2013-05-09 19:08:33

+0

完美,非常感谢!可爱的书btw;) – user1033619 2013-05-09 19:18:11

0

您可以简单地在前一个顶部显示另一个oOenGL视图,但是如果您想要在另一个引擎(cocos2d)中分层对象,那么您正在讨论将其添加到现有的CCLayer中,该CCLayer本身就是另一个OpenGL层。这就是你会遇到问题的地方。你可以做的是将3个视图夹在一起以获得效果。 (1 CCLayer低于你的OpenGL视图和一个CCLayer以上)。然后,您可以将背景颜色保留在您的2个顶部视图中,并且它将显示为全部都在一个视图中。

UIColor *color = [UIColor clearColor]; 
CGColorRef layerBackgroundColor = [color CGColor]; 
[subLayer setBackgroundColor:layerBackgroundColor];