在OpenGL中辩块,GPU有2種渲染方式
On-Screen Rendering:當(dāng)前屏幕渲染,在當(dāng)前用于顯示的屏幕緩沖區(qū)進行渲染操作
Off-Screen Rendering:離屏渲染,在當(dāng)前屏幕緩沖區(qū)以外新開辟一個緩沖區(qū)進行渲染操作
離屏渲染消耗性能的原因
需要創(chuàng)建新的緩沖區(qū)
離屏渲染的整個過程废亭,需要多次切換上下文環(huán)境国章,先是從當(dāng)前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結(jié)束以后豆村,將離屏緩沖區(qū)的渲染結(jié)果顯示到屏幕上液兽,又需要將上下文環(huán)境從離屏切換到當(dāng)前屏幕
哪些操作會觸發(fā)離屏渲染
圓角,同時設(shè)置layer.masksToBounds = YES掌动、layer.cornerRadius大于0
陰影四啰,layer.shadowXXX,如果設(shè)置了layer.shadowPath就不會產(chǎn)生離屏渲染
遮罩,layer.mask
光柵化粗恢,layer.shouldRasterize = YES
總結(jié)一下:
當(dāng)我們指定了UI視圖的某些屬性柑晒,標(biāo)記它為在位域合成之前不能用于當(dāng)前屏幕上直接顯示的時候就會觸發(fā)離屏渲染,所謂離屏渲染就是GPU在當(dāng)前屏幕緩沖區(qū)以外新開辟一個緩沖區(qū)進行渲染操作