【问题标题】:Android: 2D. OpenGl or android.graphics?安卓:2D。 OpenGL 还是 android.graphics?
【发布时间】:2010-05-02 23:31:49
【问题描述】:

我正在和我的朋友一起开发我们的第一个 Android 游戏。基本思想是游戏的每一帧整个表面都被重绘(1个大位图),分两步:

  1. 带有一些静态图像 (PNG) 的背景会抹去前一帧
  2. 然后它被洒满大量粒子,产生肥皂泡的效果,其中有大约 20 个位图的池,这些位图随机被挑选出来,以产生所有气泡(200 - 300 之间)都不同的错觉。每帧更新气泡位置(约 50 毫秒),产生移动气泡的效果。

数学引擎在 C (JNI) 中,目前所有绘图都是使用 android.graphics 包完成的,与 Lunar Lander 非常相似(因为这是我使用的示例)。 它可以工作,但动画有点生涩,我可以通过手机的温度感觉到它很忙。我们会从切换到 OpenGL 中受益吗?作为一个额外的问题:优化我们现在拥有的绘图机制(类似月球着陆器)的好方法是什么?

【问题讨论】:

    标签: android animation opengl-es 2d


    【解决方案1】:

    现在我已经开始使用 OpenGL ES,我也会将它用于 2D 图形。这种方式最灵活而且速度极快(看this example code。它是关于2D 渲染的,在那里你可以看到OpenGL 的强大功能。

    这不是最简单的开始,但有一些很好的教程 - 例如,this 是一个非常好的教程。

    【讨论】:

    • 看来 jayway 的教程是专注于 3D 绘图的,除非我弄错了。
    • 2d 和 3d 的基本初始化内容是相同的,如果你想使用 opengl,你必须先了解它;)有一些 GL11(一个特殊的 OpenGL ES 接口,并非所有设备都可用设备)方法,您不必设置视角和类似的东西,但大多数东西对于 2d 和 3d 都很重要
    • 您好,我正在开发Android 2D 游戏,我正在使用Canvas 来绘制图形。但它很慢,而且我认为使用 OpenGL 会更快。所以我尝试了您建议的测试应用程序,但结果与您的不同。 canvas 方法总是比 OpenGL 方法快。这很奇怪。你说,OpenGL 很快。你知道,问题可能出在哪里吗?这是我在 LG Optimus One 上使用 500 个精灵和启用动画的测试结果: 画布:58 毫秒(17.2413 fps) OpenGL ES:基本垂直四边形:104 毫秒(9.615 fps) 绘制纹理扩展:73 毫秒(14.02 fps) VBO 扩展:74 毫秒( 13.51 帧/秒)
    • 他们可能重新设计了画布的绘制方法,这个测试不再是最新的了;)但你也应该考虑到在安卓 1.6 的旧手机上,例如 opengl 会快得多。有一些非常好的 2d 游戏框架,例如 libgdx。也许看看他们,最终移动精灵并不是你唯一需要做的事情;)
    【解决方案2】:

    不要每次都重绘整个屏幕。这就是导致您的低帧率的原因。使用invalidate方法标记每一帧发生变化的区域。

    【讨论】:

    • 我想这是对奖金问题的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多