为什么OpenGL ES和cocos2D比Cocoa Touch / iOS框架本身更快?



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

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

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

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

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

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

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

但它们都有其用途,并且在各自的利基领域非常出色。

最新更新