UI繪製優化之布局渲染流程與原理

2021-09-24 00:10:57 字數 1448 閱讀 7679

(1)cpu 的任務繁多,做邏輯計算外,還要做記憶體管理、顯示操作,因此在實際運算的時候效能會大打折扣,在沒有 gpu 的時代,不能顯示複雜的圖形,其運算速度遠跟不上今天覆雜三維遊戲的要求。即使 cpu的工作頻率超過 2ghz 或更高,對它繪製圖形提高也不大。這時 gpu的設計就出來了。

(2)cpu與gpu的結構圖:

黃色的 control 為控制器,用於協調控制整個 cpu 的執行,包括取出指令、控制其他模組的執行等;綠色的 alu ( arithmetic logic unit )是算術邏輯單元,用於進行數學、邏輯運算;橙色的 cache 和 dram 分別為快取和 ram ,用於儲存資訊。

從結構圖可以看出, cpu 的控制器較為複雜,而 alu 數量較少。因此 cpu 擅長各種複雜的邏輯運算,但不擅長數學尤其是浮點運算。gpu的alu多得多,運算能力比cpu高很多。

(3)cpu與gpu工作流程

12 fps :由於人類眼睛的特殊生理結構,如果所看畫面之幀率高於每秒約 10-12 幀的時候,就會認為是連貫的。

30 fps :早期的高動態電子遊戲,幀率少於每秒 30 幀的話就會顯得不連貫,這是因為沒有動態模糊使流暢度降低。

60 fps 在與手機互動過程中,如觸控和反饋 60 幀以下人是能感覺出來的。 60 幀以上不能覺變化,當幀率低於 60 fps 時感覺的畫面的卡頓和遲滯現象。

android 系統每隔 16ms 發出 vsync(vertical synchronied) 訊號 (1000ms/60=16.66ms) ,觸發對 ui 進行渲染, 如果每次渲染都成功這樣就能夠達到流暢的畫面所需要的 60fps ,為了能夠實現 60fps ,這意味著計算渲染的大多數操作都必須在 16ms 內完成。(vr是90fps)

當一幀畫面渲染時間超過16ms的時候,垂直同步機制會讓顯示器硬體等待gpu完成柵格化渲染操作,這樣會讓這一幀畫面多停留了16ms,甚至更多。這樣就造成了使用者看起來畫面停頓。

16ms的事情主要被兩件事占用:

第一件:將 ui 物件轉換為一系列多邊形和紋理。

第二件: cpu 傳遞處理資料到 gpu 。

所以很明顯,我們要縮短這兩部分的時間,也就是說需要儘量減少物件轉換的次數,以及上傳資料的次數 。

如何減少這兩部分的時間 以至於在 16ms 完成呢

1、cpu 減少 xml 轉換成物件的時間

2、gpu 減少重複繪製的時間

Android 布局渲染流程與原理

首先,我們要知道android系統每隔16ms就重新繪製一次activity,也就是說,我們的應用必須在16ms內完成螢幕重新整理的全部邏輯操作,這樣才能達到每秒60幀,然而這個每秒幀數的引數由手機硬體所決定,現在大多數手機螢幕重新整理率是60赫茲 赫茲是國際單位制中頻率的單位,它是每秒中的週期性變...

Lsn2 布局渲染流程與原理 2018 1 3

gpu gpu用途是將計算機系統所需要的顯示資訊進行轉換驅動,並向顯示器提供行掃瞄訊號,控制顯示器的正確顯示,是連線顯示器和個人電腦主機板的重要元件,也是 人機對話 的重要裝置之一。顯示卡作為電腦主機裡的乙個重要組成部分,承擔輸出顯示圖形的任務,對於從事專業圖形設計的人來說顯示卡非常重要。如果cpu...

瀏覽器設計之渲染樹構建與頁面脫稿繪製

今天寫好了乙個基本的頁面脫稿繪製函式。至此乙個支援html和css的瀏覽器渲染引擎架構基本成型。編寫瀏覽器真是很好的鍛鍊,很有意思的試驗。它涉及的資料和功能都很廣。應該可以說龐大。我的感覺它就是解析一切 表達一切的技術。我所說的脫稿繪製是指不再使用html和css的原始資料,也不再使用dom,而是完...