先理解一下在屏渲染的概念。
On-Screen Rendering:意为当前屏幕渲染,指的是GPU的渲染操作是在当前作用于显示的屏幕缓冲区中进行。
Off-Screen Rendering:意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。
也就是当我们设置某些UI视图的图层属性,如果指令为在被问预合成之前不能用于直接显示的时候,典型的比如设置视图的圆角属性,蒙层遮罩,就会触发离屏渲染。
何时会触发?
·圆角(当和maskToBounds一起使用时)
·图层蒙版
·阴影
·光栅化
为何要避免?
离屏渲染是发生在GPU层面,使得GPU触发了OpenGL的多通道渲染管线,产生额外的开销,触发离屏渲染会增加GPU的工作量,可能使得CPU和GPU的工作总耗时超出16.7ms的总耗时,可能会导致UI的卡顿和掉帧。
网友评论