我一直在为Android开发游戏基本纸牌游戏。目前我的目标是Android 3.0并在华硕Transformer平板电脑上进行测试。我使用的SurfaceView对象具有类似于SDK中的Lunar Lander示例的简单画布操作。我在AndroidManifest.xml中启用了硬件加速。
我几乎完成了游戏的编码。但是,我有一些帧速率问题。我在基本游戏过程中获得了21-22 fps的帧速率。但是,我预计会为简单的眼睛糖果添加一些粒子效果,这肯定会给我一个不可接受的帧速率。为了帮助隔离问题,我评论了所有文本和卡片以及所有动画的绘图。这使我的帧速率提高到31 fps。这给我留下了一个简单的游戏循环,用于锁定画布,填充画布黑色,绘制1280x800背景位图,以及解锁和发布画布。删除背景绘制会将帧速率提高到大约62 fps,由于lockCanvas限制,这应该在设备最大值附近。绘制简单的位图应该是如此昂贵的操作吗?我知道这是一个很大的纹理,但我已经看到许多游戏成功使用大背景纹理,效果不大。没有OpenGL,我可以获得不错的帧速率吗?我已经看过日志并确认它不是GC问题。
我到目前为止唯一尝试的是确保位图没有主动重新缩放。我将背景png修改为1280x696,这是针对动作条和主蜂窝底栏调整的确切尺寸。我将修改后的文件放在drawable-nodpi文件夹中,所以我相信我的图像不应该缩放。但是,这对帧速率没有影响;帧速率降至31 fps,仅绘制背景。
有没有人对我可以做些什么来提高帧率有任何想法?我猜我的问题必须来自绘制位图,因为我基本上已经消除了其他所有内容。
答案 0 :(得分:2)
我遇到类似的问题,原因是我的RGB_565
使用SurfaceView
而我的位图使用了ARGB_8888
。一旦我将Surface View设置为与Bitmap相同,我就从20fps变为59-60 fps。转换非常缓慢。对不起,这已经晚了,但也许会帮助其他人。