2012-01-03 75 views
0

我一直在为Android开发游戏基本卡片游戏。目前我的目标是Android 3.0并在华硕Transformer平板电脑上进行测试。我正在使用类似于SDK中的Lunar Lander示例的简单画布操作的SurfaceView对象。我在AndroidManifest.xml中启用了硬件加速。Android位图帧率问题

我几乎完成了编码游戏。但是,我有一些帧率问题。在基本游戏过程中,我获得了21-22帧的帧率。不过,我预计会添加一些粒子效果,这对于简单的眼睛糖果来说,肯定会给我一个不可接受的帧速率。为了帮助隔离问题,我评论了所有文字和卡片以及所有动画的绘图。这将我的帧速率提高到了31 fps。这给我留下了一个简单的游戏循环,它锁定画布,填充画布黑色,绘制1280x800背景位图,并解锁并张贴画布。移除背景绘制将帧速率增加到约62 fps,由于lockCanvas限制,应该在设备最大值附近。应该画一个简单的位图是如此昂贵的操作?我知道这是一个很大的纹理,但我看到很多成功使用大背景纹理但效果不佳的游戏。我可以在没有OpenGL的情况下达到像样的帧率吗我看过日志并确认它不是GC问题。

我迄今试过的唯一事情是确保位图不会主动重新缩放。我将我的背景PNG修改为1280x696,这是针对操作栏和主蜂窝底栏调整的确切尺寸。我将修改放置在drawable-nodpi文件夹中,所以我相信我的图像不应该缩放。但是,这对帧速率没有影响;帧速率下降到31 fps仅绘制背景。

有没有人有什么想法,我可以做些什么来提高帧频?我猜测我的问题必须来自绘制位图,因为我基本上已经消除了其他一切。

+0

我一直在做更多的测试,发现了一些非常奇怪的行为。我以几种不同的尺寸创建了图像。对于1200x600的图像,我看不到帧速下降(61 fps)。对于1260x650图像,帧速率降至31 fps。唯一变化的是图像大小。有任何想法吗? – BKW 2012-01-03 05:01:36

回答

1

我有一个类似的问题,这是因为我的和ARGB_8888为我的位图使用了RGB_565。一旦我将Surface View设置为使用相同的位图,我就从20fps变为59-60 fps。转换非常缓慢。对不起,这很晚,但也许会帮助别人。

+0

你能举个例子吗? – user2801184 2016-12-09 02:39:46