【问题标题】:android open gl really slower than canvas?android open gl真的比canvas慢吗?
【发布时间】:2011-09-28 03:49:48
【问题描述】:

我正在测试 android SpriteMethodTest,在默认设置下,画布的帧率为 58fps,而 open gl 的帧率为 50-55fps,随着精灵越多,差距越大。

我的印象是 opengl 比 canvas 快,所以这是错误的吗?还是他们的手机有问题(htc 的愿望)?

http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest/

【问题讨论】:

    标签: android opengl-es canvas 2d sprite


    【解决方案1】:

    需要注意的是,SpriteMethodTest 并未以最高效率使用 OpenGL。每个 sprite 都使用自己的一组 GL 调用进行渲染,理想情况下,应该将许多 sprite 批处理为尽可能少的 OpenGL 调用。

    现在有一个精灵渲染性能枪战happening over at JavaGaming.orglibGDX 是当前的领跑者。如果处理得当,OpenGL 是绘制东西的最快方式。

    【讨论】:

    • 这听起来是最明智的答案。我从来没有检查过引用的代码(SpriteMethodTest),但如果它真的用单独的一组 GL 调用来绘制每个尽管如此,那么它远没有效率。
    • @ognian 我刚刚仔细观察,不仅每个四边形都是单独渲染的,每个四边形还有一个纹理绑定。说得客气一点,哎哟
    【解决方案2】:

    您可能没有正确测量它。你用了多少精灵? FPS 可能与 OpenGL 系统肯定会击败Canvas 系统。

    有关此主题的更多信息,请参阅this

    【讨论】:

    • 刚刚尝试了 1000 个动画精灵画布:12fps opengl 基本垂直四边形:10fps opengl 绘制纹理扩展:11fps opengl vbo 扩展:11fps
    • @ng93:这不正确。常规顶点数组类似于Canvas 系统,但顶点缓冲区对象和draw_texture 应该胜过Canvas 系统。贴一些截图,我可以看到你的实际结果。
    • GL 不一定更快。如果你画了很多精灵,你会遇到填充率问题。在软件中绘制精灵可能非常有效,如果您有大量内存带宽,它会很快。
    • @Romain Guy:我听说高端设备上的填充量有限。我听 Chris Pruett 谈论过这个,但据我所知,他说它并没有运行得更慢,它只是显示得更慢。是这样的,尽管我在这个特定的主题上可能是错的。
    • 好的,所以即使没有性能优势,也会有任何其他优势使其值得使用,例如电池寿命?
    【解决方案3】:

    您可能应该首先分析您的代码,以确保它实际呈现在您花费时间的地方。

    【讨论】:

    • 这是什么答案? OP 表示他使用的是 SpriteMethodTest,而不是他自己的代码。你甚至读过这个问题吗?
    【解决方案4】:

    我...不能...评论...

    这很有趣,尽管 OpenGL 也更快。根据我对我的应用程序的经验,我发现 GL 比画布快得多,但我使用的是所有定点数。

    【讨论】:

      【解决方案5】:

      这只能在没有 GPU 的模拟器或设备上实现

      【讨论】:

      • 我正在使用一个 htc 的欲望,它有一个 adreno 200 gpu
      • 正如@ryanm 所说,您用来衡量性能的 GL 代码是以最不有效的方式来制造怨恨。您应该修改它以使用交错的 VBO 来获得真正的结果
      【解决方案6】:

      刚刚在 HTC Tattoo(1.6,可能没有 GPU)上运行 SpriteMethodTest,与 Canvas 相比,OpenGL 真的很糟糕。如果对于 100 个精灵,我的速度会超过 30 fps,而所有 3 种 OpenGL 方法都低于 5 fps。目前我正在使用 Canvas 来绘制我的游戏,但我正在考虑从现在开始使用 OpenGL,这样我就可以实现一个可能非常密集的粒子系统。

      现在我很困惑,如果我无法在使用 OpenGL 的低端设备上获得性能,我为什么要使用它?大多数设备不是这种情况吗?或者也许 SpriteMethodTest 中使用的方法不是最好的(我还没有看过代码),正如某些人所说的那样?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-17
        • 2021-06-14
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 2017-01-15
        相关资源
        最近更新 更多