离屏渲染

2020-07-08  本文已影响0人  E术家

离屏渲染原理

App进行额外的渲染和合并 —> offscreen Buffer 组合 —> FrameBuffer —> 屏幕

普通渲染流程
离屏渲染流程
遮罩触发离屏渲染

离屏渲染产生的性能问题

大量的离屏渲染容易产生程序卡顿及额外的性能消耗

离屏渲染的作用

常见的系统自动触发的离屏渲染

使用了遮罩的layer layer.mask
添加了投影的layer layer.shadow
使用了光栅化的layer layer. shouldRasterize
需要进行裁剪的layer layer.masksToBounds
设置了组透明度为YES,且透明度不为1的layer layer.allowsGroupOpacity/ layer.opacity
绘制了文字的layer UILabelCore TextCATextLayer

shouldRasterize 光栅化

光栅化使用建议

圆角触发的离屏渲染

圆角触发的离屏渲染

属性解读

view.layer.cornerRadius = 2;

触发离屏渲染的原因

view.layer.masksToBounds = YES;

画家算法

画家算法

图层由远及近进行渲染。

普通渲染和离屏渲染

普通的渲染逻辑

普通渲染逻辑
当sublayer绘制到屏幕上之后,就会将sublayer从帧缓存区中移除,节省空间

离屏渲染逻辑

总结

大于等于2个图层叠加并且需要进行组合、圆角、融合、遮罩等操作时,就会触发离屏渲染

上一篇 下一篇

猜你喜欢

热点阅读