2012-05-15 106 views
4

我正在開發一個使用Canvas元素的Android遊戲。我在很大的遊戲地圖上繪製了很多圖形元素(精靈)。這些元素由標準圖形繪製功能,像drawLinedrawPathdrawArcAndroid Canvas關閉屏幕繪圖性能

不難測試,如果他們在屏幕或不。所以,如果他們不在屏幕上,我可能會完全跳過他們的繪圖程序。但即使這樣也會產生CPU成本。我想知道Android Graphics Library能比我更快嗎?

總之,我應該儘量畫出一切,即使它們完全脫離屏幕座標,相信Android Graphics Library會照顧它們,而不是花太多的CPU試圖繪製它們,或者我應該檢查自己的繪圖區域矩形,如果他們完全脫離屏幕,跳過繪圖程序?哪一種是正確的?哪一個應該更快?

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

+0

您是否找到了答案?這可以爲我節省很多工作... – bigstones

回答

4

從一個不完全科學的測試中,我確實畫了比屏幕更大的區域的Bitmaps,我發現事先檢查Bitmap是否在屏幕上看起來沒有什麼不同。

在一次測試中,我將Rect設置爲屏幕大小,並在繪製之前將另一個Rect設置爲位圖的位置並檢查Rect.intersects()。在另一個測試中,我剛畫出了Bitmap。經過300小時的抽籤,沒有明顯的趨勢 - 有的走向另一條路,有的走了另一條路。我在每一幀都嘗試過300次繪製測試,幀與幀之間的差異遠遠大於檢查與未檢查之間的差異。

從那我認爲可以肯定地說Android會在其本地代碼中檢查邊界,或者您會期望有相當大的差異。我會分享我的測試代碼,但我認爲它是有意義的在你的情況下做你自己的測試。可能的點的行爲與位圖不同,或者繪畫或畫布的某些其他功能會改變事物。

希望可以幫助你(或者另一個人在同一個問題上碰到這個線索)。