shouldRasterize(光柵化)

shouldRasterize(光柵化)是比較特別的一種離屏渲染:
光柵化概念:將圖轉化爲一個個柵格組成的圖象。
光柵化特點:每個元素對應幀緩衝區中的一像素。


     shouldRasterize = YES  

      在其他屬性觸發離屏渲染的同時,會將光柵化後的內容緩存起來,如果對應的layer及其sublayers沒有發生改變,在下一幀的時候可以直接複用。shouldRasterize = YES,這將隱式的創建一個位圖,各種陰影遮罩等效果也會保存到位圖中並緩存起來,從而減少渲染的頻度(不是矢量圖)。

      相當於光柵化是把GPU的操作轉到CPU上了,生成位圖緩存,直接讀取複用。
當你使用光柵化時,你可以開啓“Color Hits Green and Misses Red”來檢查該場景下光柵化操作是否是一個好的選擇。綠色表示緩存被複用,紅色表示緩存在被重複創建。
      如果光柵化的層變紅得太頻繁那麼光柵化對優化可能沒有多少用處。位圖緩存從內存中刪除又重新創建得太過頻繁,紅色表明緩存重建得太遲。可以針對性的選擇某個較小而較深的層結構進行光柵化,來嘗試減少渲染時間。
注意:

        對於經常變動的內容,這個時候不要開啓,否則會造成性能的浪費

        例如,我們日程經常打交道的TableViewCell,因爲TableViewCell的重繪是很頻繁的(因爲Cell的複用),如果Cell的內容不斷變化,則Cell需要不斷重繪,如果此時設置了cell.layer可光柵化。則會造成大量的離屏渲染,降低圖形性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章