2012-05-15 107 views
4

我正在开发一个使用Canvas元素的Android游戏。我在很大的游戏地图上绘制了很多图形元素(精灵)。这些元素由标准图形绘制功能,像drawLinedrawPathdrawArcAndroid Canvas关闭屏幕绘图性能

不难测试,如果他们在屏幕或不。所以,如果他们不在屏幕上,我可能会完全跳过他们的绘图程序。但即使这样也会产生CPU成本。我想知道Android Graphics Library能比我更快吗?

总之,我应该尽量画出一切,即使它们完全脱离屏幕坐标,相信Android Graphics Library会照顾它们,而不是花太多的CPU试图绘制它们,或者我应该检查自己的绘图区域矩形,如果他们完全脱离屏幕,跳过绘图程序?哪一种是正确的?哪一个应该更快?

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

+0

您是否找到了答案?这可以为我节省很多工作... – bigstones

回答

4

从一个不完全科学的测试中,我确实画了比屏幕更大的区域的Bitmaps,我发现事先检查Bitmap是否在屏幕上看起来没有什么不同。

在一次测试中,我将Rect设置为屏幕大小,并在绘制之前将另一个Rect设置为位图的位置并检查Rect.intersects()。在另一个测试中,我刚画出了Bitmap。经过300小时的抽签,没有明显的趋势 - 有的走向另一条路,有的走了另一条路。我在每一帧都尝试过300次绘制测试,帧与帧之间的差异远远大于检查与未检查之间的差异。

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

希望可以帮助你(或者另一个人在同一个问题上碰到这个线索)。