最近關於離屏渲染問題的文章隨處可見,對於乙個小白來講,可能去理解其中的原理是比較困難的。看了很多文章後,我也就是對離屏渲染有一點了解,在此做乙個總結,直接說說我們平時應該怎樣對待離屏渲染問題。觀點基於個人理解水平,如有誤區,我真誠地請大牛們指正。
對於我們通常用到的圓角,比如uiimageview這種,使用系統圓角雖然會觸發離屏渲染,但是單價相對來說,是可以接受的。
如果我們希望在滾動檢視,例如uitableview、uiscrollview等檢視,我們應該盡可能的去避免觸發離屏渲染。
如果我們使用了大量的圓角,也應該避免觸發離屏渲染。
至於如何避免觸發離屏渲染,大致有以下幾種可行方案:
通過設定shouldrasterize = yes,會使檢視渲染內容被快取起來,下次繪製的時候可以直接顯示快取,當然要在檢視內容不改變的情況下,其實我們應該把shouldrasterize用在確定不會改變的地方,否則將會導致大量的離屏渲染發生。因為shouldrasterize相當於手動開啟了離屏渲染。
採取預先生成圓角,並快取起來這個方法才是比較好的手段。預處理圓角可以在後台處理,處理完畢後快取起來,再在主線程顯示,這就避免了不必要的離屏渲染了。github上有這一類的庫:
hjcornerradius
、nzcircularimageview
在上面覆蓋乙個鏤空圓形的方法可以實現圓形頭像效果,這個也是極為高效的方法。缺點就是對檢視的背景有要求,單色背景效果就最為理想。
離屏渲染學習筆記
opengl中,gpu螢幕渲染有以下兩種方式 意為當前螢幕渲染,指的是gpu的渲染操作是在當前用於顯示的螢幕緩衝區中進行。意為離屏渲染,指的是gpu在當前螢幕緩衝區以外新開闢乙個緩衝區進行渲染操作。相比於當前螢幕渲染,離屏渲染的代價是很高的,主要體現在兩個方面 要想進行離屏渲染,首先要建立乙個新的緩...
iOS之離屏渲染
on screen rendering 意為當前螢幕渲染,指的是gpu的渲染操作是在當前用於顯示的螢幕緩衝區中進行。off screen rendering 意為離屏渲染,指的是gpu在當前螢幕緩衝區以外新開闢乙個緩衝區進行渲染操作。特殊的離屏渲染 如果將不在gpu的當前螢幕緩衝區中進行的渲染都稱為...
iOS 離屏渲染研究
gpu渲染機制 gpu螢幕渲染有以下兩種方式 離屏渲染的觸發方式 設定了以下屬性時,都會觸發離屏繪製 其中shouldrasterize 光柵化 是比較特別的一種 光柵化概念 將圖轉化為乙個個柵格組成的圖象。光柵化特點 每個元素對應幀緩衝區中的一畫素。shouldrasterize yes在其他屬性...