2011-08-18 32 views
2

我打算在游戏中实现一组新的数字:纯色圆圈。绘制的精灵(在这种情况下为圆圈)的数量以2-3开头,并可能无限增加(可能)。尽管最高可能会在60左右。总共将有5种类型的圆圈,每种都有不同的颜色和尺寸。现在看到,直到星期一我才会实现它,我想我会在stackoverflow中提问。drawCircle vs drawBitmap

有没有人知道哪种方法更快?

回答

6

位图几乎总是比任何类型的绘制都快。使用正确的准备绘制位图只是将内存转储到屏幕上。绘制圆圈需要进行大量的计算,包括抗锯齿。我在2009年JavaOne会议上发表了一篇论文,但似乎已从网站中删除旧版论文。

它取决于您的位图需要多大,但对于10像素以下的尺寸,位图精灵比甚至简单的图形操作(如绘制十字和线)要快得多。您还需要确保您的精灵在绘制时不需要任何形式的变换,并且它是与屏幕内存兼容的形式。

如果每个圆都是不同的颜色或厚度,或更差的尺寸,那么这是另一回事。创建每个位图的成本将超过节省。

您还应该记住优化的第一条规则:除非必须,否则不要这样做。

+0

假设位图是40 * 40像素,包括透明度但没有转换(简单地调用canvas.drawBitmap(staticBitmap,x,y,null),它仍然值得吗?还是有其他准备工作?我也会可能会在解码时设置rgb,因为它们会是单色圆圈。 – SBoss

+0

这比我测试的任何东西都要大,但这是一个完美的例子,您可以通过自己的性能测试告诉您答案。 – DJClayworth