3

我拼凑了一个简单的游戏循环,主要使用似乎很流行的技术,特别是在 Java 中的杀手游戏编程一书和我刚刚发现的本教程中:这里 只是一个简单的带后台缓冲区的定时游戏循环。

问题是它不会以良好的 FPS 重绘屏幕。我能从我的摩托罗拉 Xoom 中得到的最好结果是 15FPS,目标是 24。

如果我将后台缓冲区的大小减半,速度会大大提高,所以我猜这个问题可能与使用 Xoom 上的屏幕有关(我的 SurfaceView 的大小为 1280x727)......还有其他游戏看到在相同的尺寸下运行得很好。

我没有任何其他设备可以测试,所以我现在有点不知道该怎么做。

我在做什么错/错过/不知道?

4

2 回答 2

10

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

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

于 2011-08-12T21:57:47.957 回答
0

需要一些代码,但我怀疑你没有使用任何线程?如果您不使用线程,那么您的程序将不稳定并经常崩溃,因为您的所有处理都在同一个线程上

简而言之,确保您已经创建了一个新线程,我使用 OpenGL,它无论如何都需要一个线程,所以这可能是您最好的路线

于 2011-08-06T14:22:24.253 回答