我的iPhone游戏需要使用OpenGL吗?

10

在iPhone上:

如果我正在开发一个包含多个关卡、多个动画(图像序列)、jpg和png(透明背景)的游戏,有些是全屏幕的,有些不是;有些是循环播放的,有些只播放一次。那么最好的方法是什么?每个关卡可能有高达10MB的图像。还需要添加音乐和视频(剪辑场景)。所有的都是2D图形,没有3D模型。

需要使用OpenGL吗?或者可以使用Quartz或Core Animation实现吗?

7个回答

8
我使用UIView和一些核心图形(Quartz 2D)来做类似的事情,效果很好。我发现Core Graphics中的自定义绘图可以推动它更远,但是当给予图像时,UIView的工作效果最佳,而不是必须自己绘制。还要注意大量透明度。你可能会发现,大型或长时间(许多帧)的动画将是杀手。有一些技术可以最小化动画的影响,这涉及允许从内存中清除未立即显示的图像(我忘记了设置)。这可能导致你的动画不像本应该那样流畅(不确定Open GL ES是否有所帮助)。
你应该使用UIView进行原型设计,然后决定是否值得为OpenGL ES付出额外的工作。此外,如果你还不熟悉OpenGL / Open GL ES,那么学习曲线会很陡峭。

我看了一下Core Graphics和OpenGL,对我来说Core Graphics似乎更难学。 - Nosredna
2
我不能代表你的经验,Nosredna,但对我而言,CG使得简单的事情变得相当容易,更难的事情也成为可能 - 就像任何好的API一样。使用OpenGL/ES,您必须阅读相当多的内容才能掌握核心概念,然后才能开始做任何事情。 - philsquared
1
我明白。我做了一个2D精灵游戏并使用了texture2D包装器,所以第一天尝试时就有东西在移动。但是还有很多要学习才能做更多的事情。 - Nosredna
1
Nash:OpenGL ES非常简单。 - José Joel.
1
@José,我的观点是在你开始之前,你必须先学习很多知识。我相信一旦你克服了这个难关,就会变得相对容易(但我目前只尝试过一些简单的例子)。 - philsquared

7
我曾经在iPhone上使用过Quartz和OpenGL进行图形处理,虽然OpenGL的学习曲线更陡峭,但它比Quartz具有更好的性能。假设你有一个场景,需要在彼此之上绘制6个大型半透明图像。Quartz可以完成,但最好只能达到15fps。OpenGL利用了iPhone的PowerVR芯片,并且绘图是硬件加速的,因此您可以将这些图像加载到OpenGL纹理中并以25-30fps渲染而无需担心。
不过,我同意Phil的观点 - 尝试使用Quartz并查看是否满足您的需求。OpenGL非常强大,但其API缺少一些Quartz的便利功能(例如保存/恢复图形状态)。
完全另一个注释,您可能需要查看Unity的iPhone开发工具(http://unity3d.com/#iphone)。它们利用OpenGL,但为您提供一个IDE来创建游戏。它抽象出所有的图形级别代码,因此您可以专注于高级玩法。我的兄弟使用它编写iPhone游戏,非常酷。

谢谢你的信息,Ben。如果我可以选择两个答案作为最佳答案,我也会选择你的。Unity看起来很棒...不幸的是也很昂贵 :( - Ben X Tan
注意:在iOS 6中,您现在可以异步地使用Quartz,这显着提高了性能-有时可提高4倍或更多。鉴于这些管道改进,Quartz似乎是2D游戏的一个更可行的选择。 - Ben Gotow

6
我建议你去看看Cocos2D iPhone。cocos2d for iPhone是一个用于构建2D游戏、演示以及其他图形交互应用程序的框架。它基于cocos2d设计,使用相同的API,但不同的是它采用了Objective-C而不是Python。

干杯。那是我们的其中一种可能选项。 - Ben X Tan

4
最有可能是OpenGl。

3
使用OpenGL ES的一个优势是学习这项技术所投入的时间可以应用于其他平台/环境,使得你的游戏更容易移植。这些可能对你来说并不重要。

1
我建议使用Quartz。OpenGL ES真正适用于3D内容。然而,两者都能很好地工作,所以如果你已经熟悉了OpenGL ES,那么使用它也是可以的。

很遗憾,我们没有OpenGL ES的经验 :( - Ben X Tan

0

在您的游戏中,应考虑使用更少的资源,苹果建议OpenGL应用程序中不要使用超过10MB的纹理。

尝试使用纹理图集、重复使用图形、基于瓷砖的图形等方法...但避免使用过多的图形资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接