在Android上,要能夠將Draw和Post分開,必須要另外產生一張Canvas。
不懂?
如果有十個物件要繪製,從lockCanvas到PostCanvas這中間進行這十次的繪製動作,會導致畫面開始延遲和閃爍。
但如果把這十次縮減成一次,從lockCanvas到PostCanvas這中間所花的時間也就只需要十分之一,畫面更新效率理論上會提升...至少三倍?
野心大的人可能會把進行Draw的Canvas也搬到另一個Thread中進行。
那就會有兩個Thread,一個是DrawThread,一個是PostThread。
但如果畫面更新率不統一,PostThread中要執行Draw時DrawThread也進行Draw了,則Post畫面上使用的Bitmap可能就會被回收......破碎跟黑塊可能就是這樣來的.......
但,在高段的遊戲繪圖領域中,確實是用多個Thread來處理繪圖。
但那恐怕是純Thread的領域,跟繪不繪圖並沒有太直接的關係。
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b);Post時,只需要在lockCanvas所取到的Canvas上「畫一次」Bitmap(b)即可。
不懂?
如果有十個物件要繪製,從lockCanvas到PostCanvas這中間進行這十次的繪製動作,會導致畫面開始延遲和閃爍。
但如果把這十次縮減成一次,從lockCanvas到PostCanvas這中間所花的時間也就只需要十分之一,畫面更新效率理論上會提升...至少三倍?
野心大的人可能會把進行Draw的Canvas也搬到另一個Thread中進行。
那就會有兩個Thread,一個是DrawThread,一個是PostThread。
但如果畫面更新率不統一,PostThread中要執行Draw時DrawThread也進行Draw了,則Post畫面上使用的Bitmap可能就會被回收......破碎跟黑塊可能就是這樣來的.......
但,在高段的遊戲繪圖領域中,確實是用多個Thread來處理繪圖。
但那恐怕是純Thread的領域,跟繪不繪圖並沒有太直接的關係。