OpenGL ES作为2D平台

时间:2009-12-18 18:04:54

标签: iphone opengl graphics

我已经看到很多关于2D游戏的更好的Quartz或OpenGL ES。永远不要像Cocos2D这样的图书馆,如果有人能指出使用OpenGL ES作为2D平台进行教学的资源,我很好奇。我的意思是,我们是否真的说过学习3D编程值得稍微提高速度......还是可以从2D角度学习?

2 个答案:

答案 0 :(得分:3)

GL可能会为您提供更好的性能,CPU使用率更低,电池消耗更少等等。使用GL的2D绘图就像使用GL的3D绘图一样,您只是不要更改Z坐标。

话虽这么说,用Quartz编写2D绘图代码更容易,所以你必须决定权衡。

答案 1 :(得分:3)

我提供的here提供了类似的答案:

当你说Quartz时,你可能意味着核心动画。 Quartz处理视图或图层中的静态二维绘图。在iPhone上,所有用于显示的Quartz绘图都是直接或通过图层支持的视图对Core Animation层完成的。每次执行此绘图时,图层都会发送到GPU进行高速缓存。这种重新缓存是一项昂贵的操作,因此尝试通过使用Quartz每帧重绘一些动画会导致可怕的性能。

但是,如果您可以将图形拆分为内容不经常更改的精灵,则可以使用Core Animation获得非常好的性能。这些精灵中的每一个都将被托管在Core Animation CALayer或UIKit UIView中,然后在屏幕上进行动画处理。因为这些图层在GPU上缓存,基本上就像纹理一样,它们可以非常平滑地移动。我已经能够在原始iPhone(不是3G S)上以60 FPS(100 FPS 30)同时移动50个半透明层。

你甚至可以使用Core Animation做一些基本的3D布局和动画,正如我在this sample application中所展示的那样。但是,您只能使用平面矩形结构(图层)。

如果您需要进行真正的3D工作,或者想要从设备中挤出最后一点性能,那么您将需要查看OpenGL ES。但是,OpenGL ES远不如Core Animation那么容易使用,所以我的建议是首先尝试Core Animation,只有在你不能做你想做的事情时才切换到OpenGL ES。我已经在我的应用程序中使用了两者,我更喜欢使用Core Animation。