代码之家  ›  专栏  ›  技术社区  ›  Skyler

需要帮助在iPhone上优化我的2d绘图吗

  •  1
  • Skyler  · 技术社区  · 17 年前

    我正在写一个游戏,显示56个六边形棋子以棋盘的形式填满屏幕。我目前正在使用一个单例渲染类来绘制每个片段,当调用该类来绘制片段时,会根据传入的坐标从6个点创建一条路径。该路径用纯色填充,然后在图形上叠加带有alpha到白色渐变的59x59 png,使该块看起来闪闪发光。请注意,我目前正在Core Graphics中执行此操作。

    我的第一个想法是,每次我画一条路径都要花很多钱,而且似乎我可以这样做一次,然后再重新使用它,但我不确定最好的方法是什么。当我看Shark的瓶颈时,看起来png的绘制是这个过程中最费力的部分。我尝试过只渲染png覆盖,或者只渲染没有覆盖的路径,这两种方法都可以获得一些帧增益,尽管移除png覆盖会产生最多的帧。

    我目前的想法是,在启动时,我应该渲染6条路径(我拥有的每个颜色块1条),并用png覆盖它们,然后存储这些块的图像,然后在每次需要时重新绘制这些块。有没有一种有效的机制来存储你曾经画过的东西并重新绘制?这听起来像是我又一次太频繁地接触到了整个绘画PNG,但也许有一种更省力的方法可以做类似的事情。。。

    任何建议都将不胜感激。 谢谢

    5 回复  |  直到 15 年前
        1
  •  1
  •   Kevin L.    17 年前

    总体思路:

    • iPhone上的游戏编程通常需要OpenGL。核心图形更容易使用,但OpenGL针对速度进行了优化。
    • 地狱 关于性能。
    • 也许试试 PVRTC (还有这个 tutorial )因为它是iPhone的GPU制造商使用的一种格式。同样,这可能会使事情变得更糟,这取决于你的瓶颈在哪里。
        2
  •  1
  •   Brian    17 年前

    如果你真的需要速度,你必须走OpenGL路线。如果要混合使用OpenGL和Core动画,请小心,它们可能会发生冲突。

        3
  •  1
  •   Thomas Müller    17 年前

    还有一些人提到应该使用OpenGL。以下是专门针对iPhone的精彩介绍: OpenGL ES from the Ground Up: Table of Contents

        4
  •  1
  •   Peter Hosey    17 年前

    你可以试试 CGLayer 或 CALayer

        5
  •  1
  •   pokeb    17 年前

    你可能还想看看 cocos2d . 它似乎比在我的测试中使用CoreAnimation要快得多,并且为游戏提供了很多有用的东西。