我正在尝试使用canvas制作一款安卓游戏,我知道这很糟糕,因为opengl更好,但我当时并没有真正想到它,现在我差不多完成了它,我只是想得到它完成并稍后将其转换为opengl。
因此,在我的onDraw开始时,我使用以下代码绘制一个位图:
Log.d("Start Time", System.nanoTime()/1000000 + "");
canvas.drawBitmap(bitmaps.Background(), null, bg, paint);
Log.d("After drawColor", System.nanoTime()/1000000 + "");
因此,正如您所看到的,我基于矩形绘制位图,因此它被拉伸和绘制。使用日志来查看执行此操作所需的时间,我看到只需要15到20毫秒来绘制这个位图!
有谁知道为什么会这样?此外,如果有人知道从画布切换到opengl的简单方法,那将是非常棒的:p
威廉
答案 0 :(得分:1)
bg
是Rect
吗?如果是这样,则可能必须在绘制之前缩放位图,这将消耗时间。看看你是否可以预先缩放位图。
其次,您真的需要paint
来电中的drawBitmap
吗?如果您没有进行转换,则可以通过null
。
另外,为什么不使用System.currentTimeMillis()
代替纳秒来获得毫秒?
答案 1 :(得分:0)
我注意到bitmaps.Background()是一个方法;是否有机会从资源文件中反复解压缩Bitmap?如果您每帧都在绘制一个Bitmap,那么您应该将Bitmap对象保留在内存中。 (只需将预先存在的Bitmap对象绘制到屏幕上就不会那么长。)