我已经问了几次类似的问题,仍然没有解决我的问题,所以我想我会以另一种方式来看看是否有人能帮助我。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