【问题标题】:drawCircle vs drawBitmapdrawCircle 与 drawBitmap
【发布时间】:2011-08-18 14:23:51
【问题描述】:

我计划在我的游戏中实现一组新图形:普通圆圈。绘制的精灵(在本例中为圆形)的数量从 2-3 开始,并且可以无限增加(可能)。不过,最大值可能在 60 左右。总共必须有 5 种类型的圆圈,每种都有不同的颜色和大小。现在看到我要到星期一才能实现它,所以我想我会在 stackoverflow 上问它。

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

【问题讨论】:

    标签: java android android-canvas draw geometry


    【解决方案1】:

    位图几乎总是比任何类型的绘图都快。通过正确的准备,绘制位图只是将内存转储到屏幕上。画圆涉及大量计算,包括抗锯齿。我在 JavaOne 2009 上发表了一篇论文,其中涵盖了这一点,但旧论文似乎已从网站上删除。

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

    如果每个圆圈都是不同的颜色或粗细,或者更糟的是不同的大小,那就另当别论了。创建每个位图的成本将超过节省的成本。

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

    【讨论】:

    • 假设位图为40*40像素,包括透明度但不做任何变换(简单调用canvas.drawBitmap(staticBitmap, x,y,null),是否还值得?还是有其他准备? 我可能还会在解码时设置 rgb 的东西,因为它们将是单色圆圈。
    • 这比我测试的任何东西都要大一点。但这是一个完美的案例,您自己的性能测试会告诉您答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2023-04-02
    • 2011-12-11
    相关资源
    最近更新 更多