【问题标题】:Is OpenGL required for my iPhone game?我的 iPhone 游戏是否需要 OpenGL?
【发布时间】:2009-06-03 22:26:54
【问题描述】:

在 iPhone 上:

如果我正在编写一个具有多个级别的游戏,具有多个动画(图像序列)、jpg 和 png(透明)、一些全屏和一些不全屏、一些循环和一些只玩一次。最好的方法是什么?每个级别可能有多达 10MB 的图像。添加到此音乐和视频(过场动画)。所有 2D 图形,没有 3D 模型。

是否需要 OpenGL?或者这可以通过 Quartz 或 Core Animation 来实现吗?

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

    我使用 UIViews 和一些 Core Graphics (Quartz 2D) 做类似的事情,它工作正常。我发现 Core Graphics 中的自定义绘图将其推得更远,尽管 UIView 在给定图像时效果最好,而不必自己绘制。还要注意大量的透明胶片。不过,您可能会发现大型或长(多帧)动画将成为杀手。有一些技术可以最大限度地减少动画的影响,包括允许它在没有立即显示的情况下从内存中清除图像(我忘记了设置)。这可能会导致您的动画不像其他情况那样流畅(但不确定 Open GL ES 是否会有所帮助)。

    您可能应该使用 UIViews 进行原型设计,然后决定是否值得为 OpenGL ES 做额外的工作。此外,如果您还不熟悉 OpenGL/Open GL ES,那么学习曲线会很陡。

    【讨论】:

    • 我研究了 Core Graphics 和 OpenGL,看起来 Core Graphics 的学习曲线对我来说更陡峭。
    • Nosredna,我不能代表你的经验,但对我来说,CG 让简单的事情变得相当容易,让更难的事情成为可能——任何好的 API 都应该如此。使用 OpenGL/ES,您必须阅读大量内容才能掌握核心概念,然后才能开始做任何事情
    • 我可以看到。我做了一个 2D sprite 游戏并使用了 texture2D 包装器,所以在我尝试的第一天我就有了移动的东西。但是还有很多东西要学。
    • 纳什:OpenGL ES 非常简单。
    • @José,我的意思是,您必须先学习很多东西才能开始使用它。我敢肯定,一旦你克服了那个困难,它就会相对容易(但到目前为止我只尝试了一些点头的例子)。
    【解决方案2】:

    我在 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游戏,超爽。

    【讨论】:

    • 感谢本的信息。如果我可以选择 2 个回答作为答案,我也会选择你的。 Unity 看起来很棒......不幸的是也很贵:(
    • 注意:在 iOS 6 中,您现在可以以异步方式使用 Quartz,这极大地提高了性能 — 有时提高了 4 倍或更多。鉴于这些管道改进,Quartz 似乎是 2D 游戏更可行的选择。
    【解决方案3】:

    我建议您查看Cocos2D iPhone

    cocos2d for iPhone 是一个用于构建 2D 游戏、演示和其他图形/交互应用程序的框架。它基于 cocos2d 设计:它使用相同的 API,但不是使用 python,而是使用 Objective-c。

    【讨论】:

    • 干杯。这是我们可能的选择之一。
    【解决方案4】:

    很可能是 OpenGL。

    【讨论】:

      【解决方案5】:

      使用 OpenGL ES 的一个优势是,学习该技术所花费的时间可以应用于其他平台/环境,并且您的游戏可能更适合移植。这些对您来说可能并不重要。

      【讨论】:

        【解决方案6】:

        我建议使用 Quartz。 OpenGL ES 真的是最适合 3d 的东西。不过两者都运行得很好,所以如果你已经了解 OpenGL ES,那么使用它就可以了。

        【讨论】:

        • 很遗憾我们没有 OpenGL ES 经验 :(
        【解决方案7】:

        您应该考虑在游戏中使用更少的资源,Apple 建议不要为 openGL 应用使用超过 10 mb 的纹理。

        尝试纹理图集、重用图形、基于图块的图形...但避免使用过多的图形资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多