【问题标题】:Android Canvas Off Screen Drawing PerformanceAndroid Canvas 离屏绘图性能
【发布时间】:2012-05-22 20:03:38
【问题描述】:

我正在使用 Canvas 元素开发一款 Android 游戏。我在大型游戏地图上绘制了许多图形元素(精灵)。这些元素由drawLinedrawPathdrawArc 等标准图形函数绘制。

测试它们是否在屏幕上并不难。所以,如果他们不在屏幕上,我可能会完全跳过他们的绘图程序。但即使这样也有 CPU 成本。我想知道Android Graphics Library 是否可以比我更快地做到这一点?

简而言之,我是否应该尝试绘制所有内容,即使它们完全超出屏幕坐标,相信 Android Graphics Library 会处理它们并且不会花费太多 CPU 来尝试绘制它们,或者我应该自己检查它们的绘图区域矩形并如果他们完全不在屏幕上,跳过绘图程序?哪个是正确的方法?哪个应该更快?

p.s:我的目标是 Android v2.1 及更高版本。

【问题讨论】:

  • 你找到答案了吗?这可以为我节省很多工作......

标签: android performance graphics clipping off-screen


【解决方案1】:

从我所做的一项不完全科学的测试中,我绘制了比屏幕更大的区域平铺的位图,我发现事先检查位图是否在屏幕上似乎并没有太大的不同。

在一个测试中,我将一个 Rect 设置为屏幕大小,并将另一个 Rect 设置为位图的位置,并在绘制之前检查了 Rect.intersects()。在另一个测试中,我只是绘制了位图。在 300 次抽签后 没有明显的趋势 - 有些人走一条路,其他人走另一条路。我尝试了每帧 300 次绘图测试,帧与帧之间的差异远大于检查和未检查绘图之间的差异。

据此我认为可以肯定地说 Android 在其本机代码中检查边界,否则您会期望有相当大的差异。我会分享我的测试代码,但我认为根据您的情况进行自己的测试是有意义的。点的行为可能与位图不同,或者您的绘画或画布的某些其他功能会改变事物。

希望对您有所帮助(或其他人偶然发现此线程,就像我对同一问题所做的那样)。

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多