2011-10-27 42 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