我拼凑了一个简单的游戏循环,主要是使用看起来很普遍的技术,特别是在Java的Killer游戏编程书中,在本教程中我刚刚发现:Here 只是一个带有后台缓冲区的简单定时游戏循环。
问题在于它不会以良好的FPS重绘屏幕。我能从摩托罗拉Xoom中获得的最好成绩是15FPS,目标是24。
如果我的后置缓冲区大小只有一半,那么速度会大大提高,所以我猜这个问题可能与利用Xoom上的屏幕有关(我的SurfaceView的大小是1280x727)......其他游戏在相同规模下运行良好。
我没有任何其他设备可供测试,因此我现在有点担心该怎么做。
我做错了什么/失踪/无知?
答案 0 :(得分:10)
也许你的位图和表面的像素格式不同,每当你绘制位图时都会导致转换?这肯定会导致开销。尝试使用SurfaceHolder.setFormat()进行试验,看看是否有帮助。
由于您的位图使用Bitmap.Config.ARGB_8888
,您可以尝试将表面支架格式设置为PixelFormat.RGBA_8888
。或者,如果可以,请尝试使用Bitmap.Config.RGB_565
和PixelFormat.RGB_565
。
答案 1 :(得分:0)
需要一些代码,但我怀疑你没有使用任何线程?如果你没有使用Threads,那么你的程序将不稳定并且经常崩溃,因为你所有的处理都在同一个线程上
简而言之,请确保您已经创建了一个新线程,我使用OpenGL,无论如何都需要一个线程,因此这可能是您走下去的最佳途径