1

我正在使用 Kobold2D/cocos2D 为 iOS 制作 2D 游戏。现在我决定尝试添加一些 3d 建筑物(想想 GTA1/2 除了建筑物之外的一切都是 2D 的)。

我知道 OpenGL 是如何工作的,但我在尝试实现它时遇到了各种各样的错误。

我的问题是:cocos2d 是否会阻止我使用普通的 OpenGL 调用?或者如果正确完成,这是否可以正常工作?我发现的每个教程/示例都使用一些 cocos2d 包装器来混合 opengl 和 cocos ..

如果你以前做过(将你自己的 OpenGL ES 2.0 代码与 cocos2d 混合)你能指出我正确的方向吗?

4

2 回答 2

1

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

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

于 2013-05-09T18:53:39.077 回答
0

您可以简单地在前一个视图之上显示另一个 oOenGL 视图,尽管如果您想在另一个引擎 (cocos2d) 中分层对象,您正在谈论添加到现有的 CCLayer 中,该 CCLayer 本身就是另一个 OpenGL 层。那就是你会遇到问题的地方。您可以做的是将 3 个视图夹在一起以获得效果。(您的 OpenGL 视图下方有 1 个 CCLayer,上方有 1 个 CCLayer)。然后你可以在你的 2 个顶视图上保持背景颜色透明,它看起来好像它们都在一个视图中。

UIColor *color = [UIColor clearColor];
CGColorRef layerBackgroundColor = [color CGColor];
[subLayer setBackgroundColor:layerBackgroundColor];
于 2013-05-09T18:38:20.217 回答