将游戏从Android SDK GLES 1.0移植到NDK GLES 2.0?

时间:2012-04-22 17:55:24

标签: android opengl-es android-ndk porting

我目前正在使用SDK GLES10开发一款Android游戏,而且我在三星Galaxy Ace等不太好的手机上遇到了一些性能问题。所以我考虑将它移植到NDK,也可能使它使用GLES20,至少是渲染部分,它占用了最多的CPU时间。

(在Galaxy S2上它以恒定的61 FPS运行,在Galaxy Ace上它在90到20 FPS之间变化并且在大多数情况下都是口吃的)

Galaxy S2和Galaxy Ace上的大多数CPU时间采集方法都是GLES10.glDrawElements()GLES10.glVertexPointer()GLES10.TexCoordPointer()。比如Ace上使用的总CPU时间的85%和S2上的82%。

是否会将性能大幅提升为1.使用NDK进行渲染并将其移植到GLES20?

1 个答案:

答案 0 :(得分:1)

这可能只取决于你已经在做什么。

我希望找到特定的瓶颈。说“渲染”是一个瓶颈,实在太模糊,无法发挥作用。

究竟是什么阻碍了你?

  • SwapBuffers通话时间?
  • OpenGL状态变化太多了?
  • GPU顶点绑定?
  • GPU填充率约束?

取决于你的GPU是否是限制因素,取决于使用NDK的答案可能有所帮助,或者它可能根本没有帮助。

NDK可能会帮助您以较少的开销调用GPU,但您不知道这是否真的阻止了您。

如果你还没有尝试使用DDMS跟踪视图,并且看看你的大部分时间在哪里,那么你可以在经历重大改写的麻烦之前做出明智的决定。