2012-09-17 103 views
0

CCSpriteBatch節點是否只繪製可視屬性設置爲true的精靈?Cocos2d:CCSpriteBatch節點是否只繪製可見屬性設置爲true的精靈?

或者它也考慮屏幕尺寸?換一種說法。如果節點內的精靈在屏幕之外,那麼opengl繪圖調用的性能是否會反映出這一點?

+0

PS:從LearnCocos2D收到答案後,我做了一些更多的研究,並發現這個問題http://stackoverflow.com/questions/9502586/does-the-visible-property-affect-performance,證實了他的答案。我只是添加這個參考資料。 – mm24

回答

1

不,不。

CCSpriteBatchNode總是繪製所有子小精靈。我不確定究竟是什麼讓可見=不可見的精靈不會出現在屏幕上,但從技術上講,它確實每次都會繪製所有的四邊形。它也不考慮屏幕區域。

未批配的精靈的行爲有所不同。如果一個未批量的精靈不可見,則不會繪製。然而,畫面之外的精靈會被畫出。 Cocos2D沒有功能跳過屏幕/窗口邊界外的節點繪製。

以下是道聽途說,從我讀過過去幾年來,所以把它當作一粒鹽:

太多分批精靈仍然會影響性能產生負面即使它們不可見或在屏幕之外。 GPU負責取消由於完全在屏幕外部而不可見的四邊形繪圖。它仍然需要處理這些四邊形。

這是cocos2d的tilemap實現的主要問題,以及它爲什麼如此慢以及大的tilemaps。內部磁貼也使用相同的精靈分批技術。

+0

因此,如果我得到它的權利,在Spritesheet中但未添加到CCSpriteBatchNode的精靈不被GPU考慮。但是一個在CCSpriteBatchNode中而不是Visibile(例如尚未產生並在敵方緩存中)的精靈會影響性能,因爲GPU需要計算相應的四元組是否在屏幕中。它是否正確? – mm24

+0

無論精靈是否被批量處理,如果精靈離屏,則由GPU決定是否不需要繪製精靈 – LearnCocos2D