绘制圆形 vs 绘制位图

4
我计划在我的游戏中实现一个新的图形集:简单圆形。绘制的精灵数量(在本例中为圆形)从2-3开始,可以无限增加(潜在地)。最大值可能会达到60左右。总共将有5种类型的圆形,每种类型都有不同的颜色和可能的大小。既然我要等到周一才实施它,我想在stackoverflow上问一下,是否有人已经知道哪种方法更快?
1个回答

8
位图几乎总是比任何类型的绘图快。通过正确的准备,绘制位图只是将内存转储到屏幕上。绘制圆包括大量的计算,包括反走样。我在JavaOne 2009上介绍了一篇涵盖了这一点的论文,但那些老的论文似乎已经从该网站中删除了。
这取决于您的位图需要多大,但对于小于10个像素的尺寸,位图精灵比甚至简单的图形操作(如绘制交叉线和直线)要快得多。您还需要确保当绘制精灵时,它不需要任何形式的变换,并且它是与屏幕内存兼容的形式。
如果每个圆都是不同的颜色或厚度,或者更糟糕的是不同的大小,那么情况就不同了。创建每个位图的成本将超过节省的成本。
您还应该记住优化的第一条规则:除非必须,否则不要这样做。

假设位图是40*40像素,包括透明度但没有变换(仅调用canvas.drawBitmap(staticBitmap, x,y,null)),这样做还值得吗?或者还有其他准备工作吗?我在解码时可能会设置rgb值,因为它们将是单色圆形。 - SBoss
这比我测试过的任何东西都要大一点。但这是一个完美的案例,你自己的性能测试会告诉你答案。 - DJClayworth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接