2012-07-08 56 views
0

我正在嘗試使用畫布製作一個安卓遊戲,我知道這是不好的,因爲opengl更好,但我沒有真正考慮它,現在我幾乎完成了它我只想完成並在稍後將其轉換爲opengl。安卓繪製位圖畫布花費時間過長

所以,在我的onDraw的開始,我畫一個位圖用下面的代碼:

Log.d("Start Time", System.nanoTime()/1000000 + ""); 
     canvas.drawBitmap(bitmaps.Background(), null, bg, paint); 
     Log.d("After drawColor", System.nanoTime()/1000000 + ""); 

所以,你可以看到我畫基於一個矩形的位圖,因此它被拉伸和拉。使用這些日誌來看看這個過程需要多長時間,我發現繪製這個位圖需要大約15到20毫秒的時間!

有誰知道爲什麼會發生這種情況?另外,如果有誰知道一個簡單的方法從畫布切換到OpenGL,這將是真棒:對

威廉

回答

1

bg一個Rect?如果是這樣,位圖可能必須在繪製之前縮放,這會消耗時間。看看你是否可以預先縮放位圖。

其次,你真的需要在drawBitmap調用paint嗎?如果您沒有進行轉換,您可以改爲null

此外,爲什麼不使用System.currentTimeMillis()而不是納秒劃分來獲得毫秒?

+0

我沒有尋找毫秒的時間,我以爲有一個,但是當milliTime不工作時,我離開它,想通了保持命名約定相同。奇怪的是,即使當我不縮放位圖時,我只是在0,0點繪製它,它也做了同樣的事情 – 2012-07-08 14:10:29

0

我注意到,bitmaps.Background()是一種方法;是否有可能反覆從資源文件中解壓縮位圖?如果你每幀畫一個位圖,你應該把Bitmap對象保存在內存中。 (只是畫一個預先存在的位圖對象到屏幕上不會花費那麼長時間。)

+0

我有一個用於返回位圖的位圖類。所以在那個類中我創建了所有的位圖和位圖.Background()只是一個用於背景的getter – 2012-07-11 08:45:04