On-Screen Rendering 在屏渲染
意為當(dāng)前屏幕渲染,指的是GPU的渲染操作是在當(dāng)前用于顯示的屏幕緩沖區(qū)中進(jìn)行的
Off——Screen Rendering 離屏渲染
意為離屏渲染,指的是GPU在當(dāng)前屏幕緩沖區(qū)外新開辟一個緩沖區(qū)進(jìn)行渲染操作
當(dāng)我們設(shè)置某一些UI視圖的圖層屬性,指令為位于合成之前,不能直接顯示的時候,那么就觸發(fā)了離屏渲染。典型的比如說,我們設(shè)置視圖的圓角屬性,包括一些蒙層、陰影等等
什么場景觸發(fā)?
- 設(shè)置圓角。maskToBounds 同時設(shè)置
- 圖層蒙版
- 陰影
- 光柵化
為何要避免離屏渲染?
在觸發(fā)離屏渲染的時候,會增加GPU的工作量,而增加GPU的工作量很可能會導(dǎo)致GPU和CPU的工作總耗時超出了16.7ms,即屏幕的FPS小于60,從而導(dǎo)致UI的掉幀或卡頓,所以要避免離屏渲染。