【问题标题】:Core Animation for Games FPS (iPhone)游戏 FPS 的核心动画 (iPhone)
【发布时间】:2011-06-21 19:25:17
【问题描述】:

我最近开始学习用于 iPhone 开发的 OpenGL ES,但 Stack Overflow 上的几个人提到带有图像的 Core Animation 比 OpenGL(用于 2D 游戏)容易得多。我在 CA 上阅读,发现一个网站说 Core Animation 主要用于制作棋盘游戏。这是真的?

我正在尝试制作的游戏类似于小行星,因此我发现这很有用:http://cocoawithlove.com/2009/02/asteroids-style-game-in-coreanimation.html 但是,我们大多数人都知道 Mac/iPhone 模拟器与实际的 iPhone 设备完全不同。所以,底线:Core Animation 能满足我的需求吗?它能达到 OpenGL ES 的 60 FPS 吗?

【问题讨论】:

    标签: iphone ios opengl-es core-animation


    【解决方案1】:

    与任何与性能相关的问题一样,答案将取决于您尝试执行的操作以及您尝试执行此操作的硬件。正如我在回答 here 中所报告的那样,我能够使用 Core Animation 在原始 iPhone 硬件上以 60 FPS 的速度为 50 个移动的半透明 CALayers 设置动画。目前出货的设备,如 iPhone 4、iPad,尤其是 iPad 2,比第一代硬件快得多。

    我建议尝试将 Matt 的 Mac Core Animation Asteroids 示例移植到 iOS 作为练习。正如您所说,在实际设备上运行之前,您无法判断性能会如何,那么为什么不尝试一下呢?看看他的所作所为,将这个例子带到 iOS 上应该不难,因为大部分 Core Animation 代码将保持不变。

    您可能已经从 Jens Alfke 的 GeekGameBoard 代码中获得了“核心动画仅适用于棋盘游戏”的印象,该代码确实使用 Core Animation 实现了棋盘游戏系统。有几个人以此为基础建立了其他应用程序。这并不意味着 Core Animation 只对特定类型有用。

    是的,OpenGL ES 将使您能够从硬件中提取最后一点性能,但如果您不利用 cocos2d 之类的框架,则需要更多的代码才能做到这一点。如果使用得当,Core Animation 可以非常快,并且更容易使用。

    【讨论】:

    • 感谢您冗长而详细的回答,尽管我还有最后一个问题。我知道 OpenGL ES 有“游戏循环”,它可以让游戏保持运行并平衡所有设备上的性能。游戏循环是 OpenGL 特有的,还是可以与 Core Animation 一起使用?
    • @Andy B - OpenGL ES 只是一种显示技术,没有任何游戏循环的概念。游戏循环由开发人员实现,作为其后端代码的一部分。在 iOS 上,您可以使用 CADisplayLink 处理屏幕材质的定期更新和/或执行 AI 计算或其他操作。您可能还有一个后台线程或 GCD 队列来管理它。如果你在谈论视觉内容在屏幕上的更新速度,Core Animation 会为你管理,尽量让事情保持流畅。在 OpenGL ES 中,由您来管理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多