美文网首页
三、iOS离屏渲染

三、iOS离屏渲染

作者: 随意昵称你能懂得 | 来源:发表于2020-07-07 23:51 被阅读0次

iOS离屏渲染

圆角不一定会造成离屏渲染

GPU屏幕渲染方式

  1. On-Screen Rendering 当前屏幕渲染: 是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行
  2. Off-Screen Rendering 离屏渲染: GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作

离屏渲染的意义

  1. 用户需要特殊的渲染效果:使用额外的离屏缓冲区(offscreen butter)保存中间状态,最后叠加、处理后绘制在屏幕上,这样就不得不使用离屏渲染
  2. 效率优势:需要多次使用的效果,提前渲染存入离屏缓冲区,然后复用来提高效率

离屏渲染的问题

  1. 内存开支:开辟离屏缓冲区(大小不超过2.5倍屏幕像素大小)
  2. 时间和性能开支:从离屏缓冲区拷贝数据到帧缓冲区,上下文切换耗性能

如何检查离屏渲染

打开模拟器的 Debug - Color Off-screen Rendered 工具来检测是否触发离屛渲染,控件标黄即为触发了离屏渲染

造成离屏渲染情况

  1. 使用了 mask 的 layer (layer.mask)
  2. 需要进行裁剪的 layer (layer.masksToBounds / view.clipsToBounds)
  3. 设置了组透明度为 YES ,并且透明度不为 1 的 layer (layer.allowsGroupOpacity/layer.opactiy)
  4. 添加了投影的 layer (layer.shadow*)
  5. 采用了光栅化的 layer (layer.shouldRasterize)
  6. 绘制了文字的 layer (UILabel, CATextLayer, Core Text 等)

shouldRasterize 光栅化使用建议

  • 如果layer不能被复用,则没有必要打开光栅化;
  • 如果layer不是静态的,需要被频繁修改,比如处于动画之中,那么开启离屏渲染反而影响效率了;
  • 离屏渲染缓存内容有时间限制,缓存内容100ms内容如果没有被使用,那么它就会丢弃,无法进行复用;
  • 离屏渲染缓存空间有限制,超过2.5倍屏幕像素大小也会失效,且无法进行复用。

处理圆角方式

  • 只对图片做裁剪,不是多个图层
  • 贝塞尔曲线画背景图
  • 给图片用贝塞尔曲线做裁剪
  • 直接用图片做背景图

参考UIImage+YYAdd中的方法
- (UIImage *)imageByRoundCornerRadius:(CGFloat)radius
corners:(UIRectCorner)corners
borderWidth:(CGFloat)borderWidth
borderColor:(UIColor *)borderColor
borderLineJoin:(CGLineJoin)borderLineJoin

相关文章

  • iOS离屏渲染

    iOS-离屏渲染详解关于iOS离屏渲染的深入研究关于离屏渲染这两片文章分析的很详细。 渲染过程 根据渲染流水线示意...

  • iOS离屏渲染解析

    iOS离屏渲染解析

  • iOS圆角的离屏渲染,你真的弄明白了吗

    iOS圆角的离屏渲染,你真的弄明白了吗iOS圆角的离屏渲染,你真的弄明白了吗

  • iOS-离屏渲染探索

    iOS项目性能优化时,不得不提到离屏渲染,为了提升性能,我们要求尽量减少离屏渲染的发生。 那,什么是离屏渲染?离屏...

  • iOS离屏渲染的检测和优化

    在iOS离屏渲染介绍了离屏渲染的逻辑和原理,我们知道离屏渲染对于性能会有较大的消耗,那么开发中怎么避免产生离屏渲染...

  • iOS离屏渲染相关值得看的博客

    博客链接 iOS离屏渲染优化 绘制像素到屏幕上 关于iOS离屏渲染的深入研究 https://texturegro...

  • 三、iOS离屏渲染

    iOS离屏渲染 圆角不一定会造成离屏渲染 GPU屏幕渲染方式 On-Screen Rendering 当前屏幕渲染...

  • iOS性能优化之图片圆角

    在Apple官方文档中多次提出开发时,避免触发离屏渲染效果.离屏渲染触发的情况有很多种,具体可参考iOS离屏渲染相...

  • 离屏渲染

    离屏渲染是在iOS开发过程中脱离不了的话题,那么什么是离屏渲染以及哪些情况会导致离屏渲染呢?以及离谱渲染有哪些优势...

  • 四、iOS离屏渲染

    一、开启图层是否触发离屏渲染问题 注:离屏渲染的图层会标记为黄色 二、离屏渲染的渲染流程 三、离屏渲染触发的原因 ...

网友评论

      本文标题:三、iOS离屏渲染

      本文链接:https://www.haomeiwen.com/subject/cfntcktx.html