我已經問了幾次類似的問題,仍然沒有解決我的問題,所以我想我會以另一種方式來看看是否有人能幫助我。Android png性能
我正在爲Android編寫遊戲;這是我第一次嘗試這個大/複雜的程序。遊戲是一個2D動作/益智遊戲,我使用Canvas而不是OpenGL ES進行繪圖。
除了當我嘗試繪製pngs/bmps/jpgs,我自己導入的任何圖像時,一切都進展順利。我可以使用內置的Android畫布drawShape方法(包括許多Alpha內容的塗料)繪製形狀和動畫,直到母牛回家並保持60fps以上,但只要我嘗試添加自己的圖像(比如60kb png從Photoshop中保存)我立即看到一個重大的性能問題。屏幕上png的大小越大,命中越大(這是有道理的)。
我有一個簡單的問題,可以幫助我明白,如果我在這裏做得不對:
如果使用畫布繪製方法在屏幕上畫一個紅色矩形,應該我希望它是可能的改爲導入並顯示相同尺寸的紅色矩形,而不會損失性能?我已經在這個問題上做了大量的研究,但仍然不清楚爲什麼Android(或Nexus 7)在我的圖像上會有這麼難的時間。
Canvas是問題嗎?我需要移植到Libdgx還是AndEngine(這將是一個過程,我認爲...)?
如果有幫助,這是我如何加載我的資產:
@Override
public Image newImage(String fileName, ImageFormat format) {
Config config = null;
if (format == ImageFormat.RGB565)
config = Config.RGB_565;
else if (format == ImageFormat.ARGB4444)
config = Config.ARGB_4444;
else
config = Config.ARGB_8888;
Options options = new Options();
options.inPreferredConfig = config;
InputStream in = null;
Bitmap bitmap = null;
try {
in = assets.open(fileName);
bitmap = BitmapFactory.decodeStream(in, null, options);
if (bitmap == null)
throw new RuntimeException("Couldn't load bitmap from asset '"
+ fileName + "'");
} catch (IOException e) {
throw new RuntimeException("Couldn't load bitmap from asset '"
+ fileName + "'");
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
if (bitmap.getConfig() == Config.RGB_565)
format = ImageFormat.RGB565;
else if (bitmap.getConfig() == Config.ARGB_4444)
format = ImageFormat.ARGB4444;
else
format = ImageFormat.ARGB8888;
return new AndroidImage(bitmap, format);
}
我爲我的遊戲使用了LibGdx。即使當我使用大型圖像文件時,性能也不會受到影響.. – 2013-03-14 06:47:00
您可以在畫布上顯示代碼在何處繪製圖像? – 2013-10-08 10:50:21
你如何增加fps?請你可以分享一些代碼 – Deepak 2014-08-26 04:50:14