【发布时间】:2009-06-03 22:26:54
【问题描述】:
在 iPhone 上:
如果我正在编写一个具有多个级别的游戏,具有多个动画(图像序列)、jpg 和 png(透明)、一些全屏和一些不全屏、一些循环和一些只玩一次。最好的方法是什么?每个级别可能有多达 10MB 的图像。添加到此音乐和视频(过场动画)。所有 2D 图形,没有 3D 模型。
是否需要 OpenGL?或者这可以通过 Quartz 或 Core Animation 来实现吗?
【问题讨论】:
在 iPhone 上:
如果我正在编写一个具有多个级别的游戏,具有多个动画(图像序列)、jpg 和 png(透明)、一些全屏和一些不全屏、一些循环和一些只玩一次。最好的方法是什么?每个级别可能有多达 10MB 的图像。添加到此音乐和视频(过场动画)。所有 2D 图形,没有 3D 模型。
是否需要 OpenGL?或者这可以通过 Quartz 或 Core Animation 来实现吗?
【问题讨论】:
我使用 UIViews 和一些 Core Graphics (Quartz 2D) 做类似的事情,它工作正常。我发现 Core Graphics 中的自定义绘图将其推得更远,尽管 UIView 在给定图像时效果最好,而不必自己绘制。还要注意大量的透明胶片。不过,您可能会发现大型或长(多帧)动画将成为杀手。有一些技术可以最大限度地减少动画的影响,包括允许它在没有立即显示的情况下从内存中清除图像(我忘记了设置)。这可能会导致您的动画不像其他情况那样流畅(但不确定 Open GL ES 是否会有所帮助)。
您可能应该使用 UIViews 进行原型设计,然后决定是否值得为 OpenGL ES 做额外的工作。此外,如果您还不熟悉 OpenGL/Open GL ES,那么学习曲线会很陡。
【讨论】:
我在 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游戏,超爽。
【讨论】:
我建议您查看Cocos2D iPhone。
cocos2d for iPhone 是一个用于构建 2D 游戏、演示和其他图形/交互应用程序的框架。它基于 cocos2d 设计:它使用相同的 API,但不是使用 python,而是使用 Objective-c。
【讨论】:
很可能是 OpenGL。
【讨论】:
使用 OpenGL ES 的一个优势是,学习该技术所花费的时间可以应用于其他平台/环境,并且您的游戏可能更适合移植。这些对您来说可能并不重要。
【讨论】:
我建议使用 Quartz。 OpenGL ES 真的是最适合 3d 的东西。不过两者都运行得很好,所以如果你已经了解 OpenGL ES,那么使用它就可以了。
【讨论】:
您应该考虑在游戏中使用更少的资源,Apple 建议不要为 openGL 应用使用超过 10 mb 的纹理。
尝试纹理图集、重用图形、基于图块的图形...但避免使用过多的图形资源。
【讨论】: