iphone - 当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能?

标签 iphone cocoa-touch uikit opengl-es

目前,我的用户界面大量使用了核心动画。我想知道是否值得再花两个月的时间来学习openGL ES?这真的能提高 2D 表面的绘图性能吗?我没有 3D 对象,而是高度动画的 2D 对象。有时会出现 3D 扭曲、大量旋转和缩放。

特别是,我仅使用 CA 制作了一个包含大量 Sprite 的完整游戏。性能还可以,但并不完美。

最佳答案

理论上 OpenGL 应该是设备上最快的 API,因为它最接近硬件。 (如果我在这一点上错了,请有人纠正我。)在 OpenGL 中,你可以做一些巧妙的技巧,这将对你的性能有很大帮助 - 你可以批量绘制 Sprite ,你可以使用点 Sprite ,你可以尝试压缩纹理等

另一方面,您非常接近硬件,并且没有太多抽象,至少与核心动画相比是这样。你必须处理非二次幂的纹理、投影、矩阵,你必须自己编写动画代码等等。有很多地方你可能会出错并严重影响性能而不是使其变得更好。

我喜欢 OpenGL 的一点是它是跨平台的。关于OpenGL的资源有很多,还有很大的改进空间。如果您想编写游戏并且有时间学习 OpenGL,那就去做吧。将 OpenGL 基础知识包装到 OOP 设计中并不难,最终您将获得更多的性能改进空间。一个好的起点是 Cocos 2D engine for iPhone .

<小时/>

(免责声明:我对 OpenGL 知之甚少,对核心动画一无所知。我使用 OpenGL 为 iPhone 编写了两款 2D 游戏。)

关于iphone - 当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136550/

相关文章:

ios - 如何确定当前的iPhone/设备型号?

cocoa-touch - 核心数据: Can a Large Background Fetch Block Fetch Request on the Main Thread?

objective-c - 如何从另一个 View 更改文本字段的文本

iphone - 在Three20 TTLauncherView中更改页面控制点的颜色

ios - [UICollectionView setCollectionViewLayout :animated:] 上的错误访问

ios - 使用带有应用程序的 iPhone 控制外部摄像头

ios - 将 IBOutlet 添加到自定义类

iphone - 防止显示 UITableView header

ios - 带有 UICollectionViewCompositionalLayout 的单行水平 UICollectionView 的不完整删除动画

iphone - 应用程序无法在 iOS 4.2 上运行,架构问题