2011-08-18 47 views
2

我打算在遊戲中實現一組新的數字:純色圓圈。繪製的精靈(在這種情況下爲圓圈)的數量以2-3開頭,並可能無限增加(可能)。儘管最高可能會在60左右。總共將有5種類型的圓圈,每種都有不同的顏色和尺寸。現在看到,直到星期一我纔會實現它,我想我會在stackoverflow中提問。drawCircle vs drawBitmap

有沒有人知道哪種方法更快?

回答

6

位圖幾乎總是比任何類型的繪製都快。使用正確的準備繪製位圖只是將內存轉儲到屏幕上。繪製圓圈需要進行大量的計算,包括抗鋸齒。我在2009年JavaOne會議上發表了一篇論文,但似乎已從網站中刪除舊版論文。

它取決於您的位圖需要多大,但對於10像素以下的尺寸,位圖精靈比甚至簡單的圖形操作(如繪製十字和線)要快得多。您還需要確保您的精靈在繪製時不需要任何形式的變換,並且它是與屏幕內存兼容的形式。

如果每個圓都是不同的顏色或厚度,或更差的尺寸,那麼這是另一回事。創建每個位圖的成本將超過節省。

您還應該記住優化的第一條規則:除非必須,否則不要這樣做。

+0

假設位圖是40 * 40像素,包括透明度但沒有轉換(簡單地調用canvas.drawBitmap(staticBitmap,x,y,null),它仍然值得嗎?還是有其他準備工作?我也會可能會在解碼時設置rgb,因爲它們會是單色圓圈。 – SBoss

+0

這比我測試的任何東西都要大,但這是一個完美的例子,您可以通過自己的性能測試告訴您答案。 – DJClayworth