绘制简单形状和复杂运动之间的性能差异位图中的Clip Data



我正在与另一位开发人员合作开发一款应用程序。他的部分基本上是一个控制面板,作为一个独立的模块开发,必须集成在我的主应用程序中。

我的应用程序必须重新绘制bitmapData中的所有面板和元素才能进行一些bitmapData.hitTest控件(我们正在处理一个多点触摸表,面板是可拖动的,但必须避免重叠)。

直到昨天,我还在使用一个占位符,这意味着我基本上是在绘制他正在处理的模块的精确尺寸的简单形状。今天,我们第一次尝试将所有内容合并在一起,结果非常不同。看起来,重新绘制他的模块而不是我的占位符形状的过程导致了性能的大幅下降。

这正常吗?我认为在位图中绘制显示对象的过程Data的性能与剪辑的尺寸有关,而不是与内容有关。

编辑:我已经用一个变通方法解决了它(基本上是画一些类似面板对象的边界框的东西),但我仍然对它很好奇:)

性能在一定程度上取决于显示对象的内容。根据被画儿童的数量和复杂性,这可能会有很大的差异。举个例子,你可以绘制10000个(任意大的数量)1px乘1px(任意小的数量)的精灵,它们都叠在一起。每个精灵的绘图代码中都可以包含大量要绘制的任意矢量命令(moveTo、lineTo等),即使在可见区域之外,当调用绘图方法时,这些绘图命令也将在不考虑绘图区域的情况下执行(除非特定代码阻止因特定约束而调用它们)。不过,我认为你不应该看到将显示对象绘制到BitmapData对象与将其绘制到屏幕上有显著差异(我能想到的唯一区别是写入RAM/堆空间,而使用GPU加速,它可能在内部使用视频RAM)。

我相信hitTest本身不会受到子代数量的影响,因为在这一点上,你只会看到A中的像素与B中的像素,所以正如你所说,它应该只取决于A和B中像素的面积。

出于好奇,你在使用什么样的触摸屏,它在什么平台上工作(Android?)。我想,如果有一个像Tegra 2或3这样的好处理器(或其他一些多核和/或GPU加速芯片组),这不会对性能产生明显的影响(尽管我可能错了)。我一直在研究自上而下的射击游戏,最近从使用我使用边界框编写的简化命中测试方法改为使用BitmapData的命中测试方法,在本地测试它似乎不会对性能产生负面影响,但我还没有带电缆在设备上测试它,所以我不确定它在设备上运行时是否会对性能产生影响。

最新更新