OpenGL在Android姜饼中的糟糕性能

OpenGL在Android姜饼中的糟糕性能,android,performance,opengl-es,android-2.3-gingerbread,Android,Performance,Opengl Es,Android 2.3 Gingerbread,我正在使用OpenGL 1.0为Android开发一款视频游戏 我遵循了本教程: 我已经在我现在的手机上制作了一个小演示,效果非常好,流畅(限制在30 FPS以内):HTC Sensation(安卓4.0.3冰淇淋三明治) 此外,我在朋友的手机上测试了我的游戏,结果如下: 银河S2=完美!(每分钟30帧) 银河音符=完美!(每分钟30帧) HTC One S=完美!(每分钟30帧) 索尼Xperia Tipo=完美!(每分钟30帧) 三星Galaxy Ace GT-S5830=性能非常差>\

我正在使用OpenGL 1.0为Android开发一款视频游戏

我遵循了本教程:

我已经在我现在的手机上制作了一个小演示,效果非常好,流畅(限制在30 FPS以内):HTC Sensation(安卓4.0.3冰淇淋三明治)

此外,我在朋友的手机上测试了我的游戏,结果如下:

  • 银河S2=完美!(每分钟30帧)
  • 银河音符=完美!(每分钟30帧)
  • HTC One S=完美!(每分钟30帧)
  • 索尼Xperia Tipo=完美!(每分钟30帧)

  • 三星Galaxy Ace GT-S5830=性能非常差>\up>内存可能是瓶颈。你知道Android不能很好地处理图像。你在回收你的位图吗? 为什么不使用OpenGLES2.0呢?我正在三星Galaxy Ace和LG p500(都有姜饼)中开发游戏和测试,没有任何问题。我几乎能拍到50帧

  • 永远不要在UI线程中使用
    线程。睡眠
    ,这非常糟糕

  • 使用静力学;这是一个糟糕的OOP实践,但在这里很有用

  • 使用顶点缓冲区对象

  • onSurfaceChanged
    中初始化,并在此处获取位置(
    glget***location

  • 这并不总是你的错,因为在Froyo上,垃圾收集器坏了,然后在Gingerbread上,
    触摸驱动程序触发了太多的事件
    (谷歌I_O 2011_uuAndroid应用程序内存管理)。因此,逐渐切换到应用程序/游戏的其他输入方法,这些输入方法不使用触摸式android运动和位置传感器


  • 一些建议:也许GC正在走向疯狂?尝试剥离应用程序,直到问题消失。试着分析一下你的应用。我认为200MB并不是那么小。您可以尝试在开始时检测ram容量,然后在必要时将位图大小减少一半。无论如何,即使这样也不能解决我在Ace上的问题。看来ACE在这方面有一个特殊的问题。因为我经历了这个问题,并继续使用静力学解决它,避免使用睡眠,并切换到vbos