什么是离屏渲染? 对离屏渲染的理解。
在屏渲染 On-Screen Rendering
GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行
离屏渲染 Off-Screen Rendering
- 离屏幕渲染是在GPU层面发生的,即GPU在当前屏幕缓冲区外,新开辟了一个缓冲区进行渲染
- 当设置某一些视图的图层属性时,如果在GPU未合成前,不能用于直接显示的时候,就会触发离屏渲染,包括设置视图的圆角属性、蒙层遮罩等
离屏渲染触发条件
- 设置图层圆角时(当和maskToBounds一起使用时)
- 设置图层蒙版
- 设置阴影
- 光栅化
避免离屏渲染
CPU和GPU在进行视图绘制渲染时做了大量的工作,而离屏渲染是发生在GPU层面的,即离屏渲染触发了GPU层面的OpenGL的多通道渲染管线产生了额外的开销,因此需要避免
- 创建新的渲染缓冲区,增加内存的开销
- 因为触发了OpenGL的多通道渲染管线,会有上下文的切换,增加GPU的额外开销
总结: 在触发离屏渲染时,会增加GPU的工作量,会导致CPU和GPU工作耗时会超过16.7ms(每一帧图像最大支持的绘制时间),最终会导致UI的卡顿和掉帧,因此需要避免离屏渲染
网友评论