什么是离屏渲染?

渲染又分为离屏渲染与在屏渲染

·On-Screen Rendering

意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于屏幕缓冲区进行的

·Off-Screen Rendering

意为离屏渲染,指的是GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作

·何时触发离屏渲染

·圆角(当和maskToBounds=YES一起使用时)
·遮罩
·阴影
·光栅化

·为何要避免

因为会触发 GPU 多通道渲染管线产生了额外的开销,会增加 GPU 的工作量,很有可能导致 CPU 和 GPU 工作耗时加起来的总耗时超出了16.7ms(1秒60FPS,1000/60)导致 UI的卡顿和掉帧,所以我们要避免离屏渲染。

总结

当我们设置一些 UIView 的图层属性,标记位于合成之前,不能用于直接显示的时候。那么就触发了离屏渲染。典型的如圆角属性包括一些蒙层遮罩。 离屏渲染起源于 GPU 层面,指的是 GPU 新开辟的一块缓冲区进行渲染操作。

离屏渲染的查看方式 Debug->ViewDebug->Off-Screen Rendering Yellow

附Demo:https://github.com/ZeKunLi/iOS-InterView/tree/master/%E5%9C%86%E8%A7%92%E7%A6%BB%E5%B1%8F%E6%B8%B2%E6%9F%93

你可能感兴趣的:(什么是离屏渲染?)