安卓画布离屏绘制性能

4

我正在使用Canvas元素开发一款Android游戏。在一个大的游戏地图上,我有许多绘制的图形元素(精灵)。使用标准的图形函数如drawLinedrawPathdrawArc等对这些元素进行绘制。

测试它们是否在屏幕内并不难。因此,如果它们超出了屏幕,我可以完全跳过它们的绘制程序。但即使如此,这也会消耗CPU资源。我想知道Android Graphics Library是否比我更快地完成这项任务?

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

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


你找到答案了吗?这可能会为我节省很多工作... - bigstones
1个回答

4
根据我进行的一项不完全科学的测试,我发现事先检查位图是否在屏幕上似乎没有明显的区别。在一个测试中,我将一个矩形设置为屏幕大小,将另一个矩形设置为位图位置,并在绘制之前检查Rect.intersects()。在另一个测试中,我只是绘制了位图。经过约300次绘制后,没有明显的趋势-有些走向一种方式,而其他人则走向另一种方式。我尝试每帧进行300次绘制测试,从一帧到另一帧的变化比检查和未检查的绘制之间的差异要大得多。因此,我认为安卓在其本地代码中检查边界,否则你会期望有很大的区别。我可以分享我的测试代码,但我认为最好是在你的情况下自己进行测试。可能点的行为与位图不同,或者你的画笔或画布的某些其他特性会改变事情。希望这可以帮助你(或其他人偶然发现这个问题)。

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