GPU屏幕襯著有以下兩種方法:
On-Screen Rendering
意為以後屏幕襯著,指的是GPU的襯著操作是在以後用於顯示的屏幕緩沖區中停止。
Off-Screen Rendering
意為離屏襯著,指的是GPU在以後屏幕緩沖區之外新開拓一個緩沖區停止襯著操作。
特別的離屏襯著:
假如將不在GPU確當前屏幕緩沖區中停止的襯著都稱為離屏襯著,那末就還有另外一種特別的“離屏襯著”方法: CPU襯著。
假如我們重寫了drawRect辦法,而且應用任何Core Graphics的技巧停止了繪制操作,就觸及到了CPU襯著。全部襯著進程由CPU在App內 同步地
完成,襯著獲得的bitmap最初再交由GPU用於顯示。(CPU襯著—>GPU顯示)
甚麼時刻會喚起離屏襯著:
當應用圓角,暗影,遮罩的時刻,圖層屬性的混雜體被指定為在未預分解之前不克不及直接在屏幕中繪制,所以就須要屏幕外襯著被喚起。
為何離屏襯著會形成機能消費:
屏幕外襯著其實不意味著軟件繪制,然則它意味著圖層必需在被顯示之前在一個屏幕外高低文中被襯著(豈論CPU照樣GPU)。
所以當應用離屏襯著的時刻會很輕易形成機能消費,由於在OPENGL裡離屏襯著會零丁在內存中創立一個屏幕外緩沖區並停止襯著,而屏幕外緩沖區跟以後屏幕緩沖區高低文切換是很耗機能的。
應用Instruments來監測離屏襯著
Instruments的Core Animation對象中有幾個和離屏襯著相干的檢討選項:
Color Offscreen-Rendered Yellow
開啟後會把那些須要離屏襯著的圖層高亮成黃色,這就意味著黃色圖層能夠存在機能成績。
Color Hits Green and Misses Red
假如shouldRasterize被設置成YES,對應的襯著成果會被緩存,假如圖層是綠色,就表現這些緩存被復用;假如是白色就表現緩存會被反復創立,這就表現該處存在機能成績了。
IOS版本上的優化
IOS 9.0 之前UIimageView跟UIButton設置圓角都邑觸發離屏襯著。
IOS 9.0 以後UIButton設置圓角會觸發離屏襯著,而UIImageView裡png圖片設置圓角不會觸發離屏襯著了,假如設置其他暗影後果之類的照樣會觸發離屏襯著的。
這能夠是蘋果也認識到離屏襯著會發生機能成績,所以能不發生離屏襯著的處所蘋果也就不消離屏襯著了。
經由過程此文,願望能贊助到年夜家,感謝年夜家對本站的支撐!
【IOS 機能優化中離屏襯著】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!