2009-07-16 29 views
7

目前我有一个用户界面,令人难以置信的大量使用核心动画。我想知道是否值得花2个月的时间学习openGL ES?这是否真的可以提高二维曲面的绘图性能?我没有3D对象,但高度动画2D的东西。有时会出现3D扭曲,旋转和缩放。当涉及高度动画的用户界面时,openGL ES比Core Animation和UIKit有更好的性能吗?

特别是我制作了一个全面的游戏,只用了很多精灵。性能可以,但不完美。

回答

3

这取决于你在做什么以及你瞄准什么设备。如果您正在从可编程图形管道中获益,并将目标锁定在iPhone 3GS上,那么您可能会看到一些好处,只是因为该功能未通过CoreAnimation公开,因此您必须以某种奇怪的方式进行操作(操纵图像等)。 iPhone 3G的硬件没有可编程的着色器,所以即使你的效果可以用着色器来表达,移动到OpenGL也不会在旧手机上提供这些好处。

如果你正在做的是移动,旋转和缩放2D表面然后CoreAnimation要给非常相似的性能到OpenGL,略好是坏取决于你的数据是如何进入该层等

5

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

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

我喜欢OpenGL的是它是跨平台的。关于OpenGL有很多资源,还有很多需要改进的空间。如果你想写游戏,并有时间学习OpenGL,那就去做吧。将OpenGL基础包装到OOP设计中并不难,最终你会获得更多空间来提升性能。一个好的开始是Cocos 2D engine for iPhone


(声明:我知道只是OpenGL和没有太多关于核心动画一点点,我写了两个2D游戏使用OpenGL iPhone。)

4

我问的人同样的问题在WWDC上个月的答案肯定是肯定的 - 如果你花时间在低级别使用OpenGL,你将获得更好的2D性能。

相关问题