为什么SurfaceView的游戏循环无法运行体面的FPS?

Str*_*tch 3 android frame-rate surfaceview game-loop

我拼凑了一个简单的游戏循环,主要是使用看起来很普遍的技术,特别是在Java的杀手游戏编程书中,在本教程中我刚刚发现:这里 只是一个带有后台缓冲区的简单,定时的游戏循环.

问题是它不会以良好的FPS重绘屏幕.我能从摩托罗拉Xoom中获得的最好成绩是15FPS,目标是24.

如果我的后置缓冲区大小的一半,速度会大幅提升,所以我猜这个问题可能与利用Xoom上的屏幕有关(我的SurfaceView的大小是1280x727)...还有其他游戏看到了以相同的尺寸完美地运行.

我没有任何其他设备可以测试,所以我现在有点卡住了该做什么.

我做错了什么/失踪/无知?

oli*_*erg 10

也许你的位图和表面的像素格式不同,每当你绘制位图时都会导致转换?这肯定会导致开销.尝试并尝试使用SurfaceHolder.setFormat()来查看是否有帮助.

由于您的位图正在使用Bitmap.Config.ARGB_8888,您可以尝试将表面支架格式设置为PixelFormat.RGBA_8888.或者,如果可以,那么尝试使用Bitmap.Config.RGB_565,和PixelFormat.RGB_565.