我在Android手机上测试OpenGL性能(确切地说就是HTC Wildfire),我遇到了一个奇怪的事情 - 当我尝试绘制一个像屏幕大小(320 x 480)的纹理索引矩形时,我可以得到一个帧速率高达40 fps! - 这只是在我使用32x32纹理时.
如果我将纹理大小增加到256x256,性能下降到35帧.
我的问题是 - 所有这些Android游戏如何能够顺利运行并且仍然充满了酷炫的图形.
小智 5
您可以通过多种不同方式从设备中获得性能.
但最重要的是使用带有方法分析的DDMS来确定瓶颈实际上的位置,它们可能是您不期望它们的位置,例如记录,gc,循环中的慢速操作.您将能够看到渲染的时间和其他操作的时间.(寻找GLImpl.glDrawElements)
我最大的问题是GC过于频繁地踢(每秒5次,导致我的fps非常迟钝),你会看到你经常会在你甚至想不到的地方看到的内存.例如,如果使用+运算符将字符串连接到float或使用传统的java get()函数或者(最差)集合,这些会创建大量可以触发GC的对象.
此外,如果您有昂贵的操作将它们分成一个单独的线程.
此外,我假设你创建纹理一次,每次使用相同的索引.我已经看过一些教程,每次渲染帧时都会创建纹理.
随着DDMS的广泛使用,我能够在HTC Desire上从12到50获取fps以用于繁忙的场景.
希望能让你朝着正确的方向前进:)
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |