2011-10-27 41 views
0

我正试图计算屏幕上所有物体或形状占用的总面积。即如果我有两个相交的圆圈A和B,我想计算A union B覆盖的区域(在屏幕上)。如何计算屏幕上所有物体/形状的总面积

我一直在阅读花栗鼠documentation,看着花栗鼠API为我可能使用的方法,但我还没有找到任何我可以直接使用。

只有两个方法,我发现,这可能是有用的,是这两个:

  • 使用第一种方法(pointQueryFirst)去:pointQueryFirst:layers:group:segmentQueryFirstFrom:to:layers:group:

    我的想法是对的方式通过屏幕上的所有点并调用此方法。如果一个点中没有形状,则将其累加到一个变量中。然后将该变量值与屏幕区域分开,以获得空闲屏幕的百分比。

  • 或者使用第二种方法(segmentQueryFirstFrom),创建一个递归算法,将屏幕分为两半,并在每一半上运行查询,如果任何一半包含形状,则将该区域分成两半,并检查这些区域是否包含任何形状,等等...

但我期望在使用它们时,整体性能会受到影响。我可以使用另一种解决方案吗?另一种我没有找到的方法?任何帮助是极大的赞赏。

回答

0

花栗鼠是不是特别能够帮助你。你提到的方法是可行的,但速度很慢。

我想我会做一个很好的老式遮挡查询。将图形渲染为纹理或某种屏幕外缓冲区,然后对像素进行计数。

+0

我是新来的objective-c,cocos2d,花栗鼠。任何有关使用哪些类的建议?之后我可以在API中查找它。 –

+0

制作CCRenderTexture,然后使用glReadPixels()读回像素数据。请记住,这是*不*很快。从GPU读取像素需要花费几十毫秒的时间,因此您不希望每帧都这样做。 – slembcke