2

不知道cocos2D是不是建立在iOS的框架之上的,cocos2D会不会比直接使用Cocoa框架慢一点?(cocos2D 是在 OpenGL ES 之上,而后者又是在 Cocoa Touch / iOS 框架之上,包括 Core Animation 和 Quartz?)。

但是,听说 OpenGL ES 实际上比使用 Core Graphics、Core Animation 和 Quartz 更快?

那么是OpenGL ES最快,cocos2D第二,Core Animation最慢?有人知道为什么使用 OpenGL ES 比直接使用 Cocoa 框架更快吗?

4

1 回答 1

2

cocos2D 建立在 OpenGL 之上。在 cocos2D 中创建精灵时,实际上是在创建 3D 模型并为其应用纹理。3D 模型只是一个扁平的正方形,相机总是直视它,这就是为什么它看起来都是扁平的和 2D 的。但这就是为什么您可以轻松地进行缩放和旋转精灵之类的事情的原因——您真正要做的就是旋转 2D 正方形(实际上是两个三角形)或将它们移近或远离相机。但是 Cocos2D 会为您处理所有这些。

OpenGL 从一开始就被设计为非常快速地输出 3D 图形。因此,它旨在处理周围的推挤点和三角形。然后通过可以专门用于此的 3D 渲染硬件来增强它。由于这就是它所做的一切,它可以非常优化地对构建对象的点进行所有数学运算并将纹理映射到这些对象上。它不必担心 Cocoa 所做的处理触摸或其他系统事情。

Cocoa Touch 不使用 openGl。它可能会使用一些硬件加速,但它不是为此而设计的——它是为创建 2D 按钮等而设计的。它做了什么,它做得很好,但它需要通过很多层来完成它需要做的事情并不像专为图形设计的东西(openGL)那样高效。

OpenGL 是最快的 cocos2D 稍慢,但这只是因为有一些包装器可以让你的生活更轻松。如果你要做同样的事情,那么你可能会更快,但要以灵活性为代价。核心动画是最慢的。

但它们都有自己的用途,并且在各自的利基领域都表现出色。

于 2012-04-19T12:58:30.253 回答