2012-01-03 81 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