【问题标题】:How to optimize particle emitter render FPS (in openGL) on iOS devices?如何在 iOS 设备上优化粒子发射器渲染 FPS(在 openGL 中)?
【发布时间】:2012-10-14 05:41:10
【问题描述】:

我试过这些:

  1. 使粒子图像更小,现在使用 8x8 的图像。我只是不知道如何让它变得更小,因为我需要一个渐变的圆圈。 4x4 太小了

  2. 降低粒子数,现在是 40,但如果再低就太低了。

我还有其他方法可以让它变得更好吗?

我看到很多很酷的游戏(比如 Bejewled Blitz)都有非常好的效果,而且它们似乎使用了非常平滑的图像/许多粒子。有没有其他方法可以让 FPS 变得更好?

感谢所有好心的投票和回答!以下是一些更新:

  1. 我已经在使用 cocos2d-x 和 OpenGL
  2. 我目前使用一个名为 Particle Designer 的商业软件
  3. 我正在 iTouch 4 上进行测试,而所有其他游戏都在运行,没有任何问题。我尝试切换到其他设备,但问题仍然存在。
  4. 现在的FPS是25-30有粒子效果,我肯定能感觉到(有点卡顿)。当屏幕上有更多的粒子效果时,情况会更糟(FPS可能只有10)
  5. 我尝试了很多方法,发现粒子元素的形状是一个非常关键的瓶颈,但真的很难让它变小。

【问题讨论】:

    标签: ios opengl-es particles


    【解决方案1】:

    您可以做的第一件事就是开始使用一些支持优化粒子系统的游戏引擎。我对 iOS 可用的内容没有一个很好的概述,但必须有一些免费和开源的引擎。例如Cocos2D 有粒子。

    但是如果选择自己做,那么通常减少绘制调用和状态更改的数量会使渲染更快。如果您有不同的纹理,您可以将它们合并到texture altas。这将允许您将所有粒子合并到一个顶点缓冲区中并一次渲染所有粒子。

    您的数量(40 个粒子)似乎非常非常低。你确定粒子是瓶颈吗?通常优化渲染性能是一个非常困难且耗时的过程。一个人需要做很多实验,使用不同的工具,尝试各种方法,然后才能弄清楚瓶颈是什么以及如何让它更快。问题可能是一般性质的并且非常特定于硬件。在一台设备上运行得更快的东西在另一台设备上运行得更慢。

    除非您出于教育原因这样做,否则我强烈建议您重用现有的解决方案,并投入数年的工作以使其更快。

    更新:看着你的编辑,我不得不说,我很难提供任何建议。也许精灵太大了,你最大化了填充率。或者它们上的着色器过于复杂,即使绘制其中的几个也需要很长时间。

    【讨论】:

    • @AwQiruiGuo,我更新了答案。我没有很多想法。也许你附上截图?
    • 非常感谢您的更新。我想知道,我是否可以使用原生 API 而不是图像来绘制形状?
    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多