美文网首页
iOS离屏渲染原理

iOS离屏渲染原理

作者: 天涯寻梦人 | 来源:发表于2020-07-08 13:40 被阅读0次

1.什么是离屏渲染

    说到离屏渲染,那我们就要说一下苹果的渲染方式有哪些,首先苹果这边渲染方式主要有两种On-Screen Rendering (当前屏幕渲染) 和Off-Screen Rendering (离屏渲染).

1.Screen Rendering (当前屏幕渲染)

指的是GPU的渲染操作是在用于显示的屏幕缓冲区中进行,不需要额外创建新的缓存,也不需要开启新的上下文,所以性能较好,但是收到缓存大小限制等因素,一些复杂的操作无法完成。

2.Off-Screen Rendering (离屏渲染)

指的是在GPU的当前屏幕缓冲区外开辟新的缓冲区进行操作。

3.为什么会发生离屏渲染?

首先为什么要开辟离屏渲染,为什么不能使用Screen Rendering (当前屏幕渲染)直接渲染,首先在我们知道Screen Rendering (当前屏幕渲染)是直接从屏幕的帧缓冲区去读取图片信息然后展示,但是一些比较复杂的UI会被分解成多个图层分别绘制,例如蒙版,但是帧缓冲区并不会一直保存着之前绘制的图片的信息,绘制完成以后就被丢弃掉了,这样当我们对一个ImageView用layer.cornerRadius + layer.masksToBounds 切圆角的时候如果有背景色的情况下他其实是对背景图层和图片图层分别切,但是背景图层已经被丢弃了掉了,这个时候就无法完成对ImageView去切圆角,所以我们就要有一个单独的缓冲区来吧这两个图层的信息存下来,以便于后续的操作,所以这个时候就发生了离屏渲染.

2.常见发生离屏渲染的情况

1.使用了 mask 的 layer (layer.mask)

2.需要进行裁剪的 layer (layer.masksToBounds /view.clipsToBounds)

3.设置了组透明度为 YES,并且透明度不为 1 的layer (layer.allowsGroupOpacity/ layer.opacity)

4.添加了投影的 layer (layer.shadow*)

5.采用了光栅化的 layer (layer.shouldRasterize)

6.绘制了文字的 layer (UILabel, CATextLayer, Core Text 等)

3.如何看一个图层是否发生离屏渲染

选中跑起来项目的模拟器 ——>  Debug ——>  Color Off-screen Rendered

4.结合以下案例看结果

由此可以看出并不是说用了masksToBounds或clipsToBounds就一定会发生离屏渲染,当图层有多个并且发生了masksToBounds或clipsToBounds或者阴影等才会发生离屏渲染,就此说明阴影和边框和背景在渲染时也是单独的图层,可以参照以下图片

相关文章

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

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

  • iOS 圆角阴影优化

    目录 离屏渲染原理 iOS添加圆角的方法比较 圆角和阴影怎么同时存在 autoLayout下怎么使用 1.离屏渲染...

  • 性能优化 别说我不告诉你

    iOS视图成像理论及优化 iOS图形原理与离屏渲染 AsyncDisplayKit 2.0 Tutorial: G...

  • iOS 性能优化

    iOS App 启动性能优化iOS离屏渲染优化(附DEMO) iOS Objective-C 数组遍历的性能及原理...

  • iOS离屏渲染

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

  • iOS离屏渲染解析

    iOS离屏渲染解析

  • iOS离屏渲染原理

    1.什么是离屏渲染 说到离屏渲染,那我们就要说一下苹果的渲染方式有哪些,首先苹果这边渲染方式主要有两种On-S...

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

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

  • iOS-离屏渲染探索

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

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

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

网友评论

      本文标题:iOS离屏渲染原理

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