美文网首页
iOS离屏渲染

iOS离屏渲染

作者: LamSpeech | 来源:发表于2020-07-08 18:00 被阅读0次

1、渲染简介

正常渲染:APP中的数据经过CPU和GPU的计算处理后,形成帧数据并将结果存放在帧缓存区,需要显示时从帧缓存区拿取数据经过数模转换并渲染到屏幕上的过程(数据特点是即用即丢且只能存放一组数据)

离屏渲染:APP需要显示的画面涉及到多个layer混合处理,因为帧缓存区只能存放一组数据无法同时对多组数据进行处理时,系统会自动将这多组的数据存放至离屏缓存区并混合处理后形成一组数据再重走正常渲染流程的过程。

2、离屏渲染的利弊

劣势:离屏渲染加大了系统的负担,造成性能上的损耗。主要表现在以下几个方面。

离屏渲染需要额外的存储空间,存储空间大小的上限是2.5倍的屏幕像素大小,一旦超过,则无法使用离屏渲染

一旦因为离屏渲染导致最终存入帧缓存区的时候,已经超过了16.67ms,则会出现掉帧的情况

优势:虽然离屏渲染会需要多开辟出离屏缓存区来存储中间状态,但是对于多次出现在屏幕上的数据,可以提前渲染好,从而达到复用的目的,这样CPU/GPU就不用做一些重复的计算(光栅化)

开发的特殊需求背景下,比如 一些动画效果和显示效果,需要多图层以及离屏缓存区保存中间状态,这种情况下就不得不使用离屏渲染(圆角、阴影、高斯模糊等)。

3、离屏渲染监控

Xcode模拟器提供给开发者一个工具,可如下图进行开启,开启状态触发离屏渲染的视图会被标记颜色

4、日常开发避免非必要离屏渲染

日常开发时总是听到有人说尽量避免使用圆角来避免离屏渲染的问题产生。那么经过上文我们可以得知这一说法并不完全正确。

我们先看一下圆角方法cornerRadius的官方描述:

Setting the radius to a value greater than 0.0 causes the layer to begin drawing rounded corners on its background. By default, the corner radius does not apply to the image in the layer’s contents property; it applies only to the background color and border of the layer. However, setting the masksToBounds property to true causes the content to be clipped to the rounded corners.

设置cornerRadius大于0时,只会为layer的backgroundColor和border设置圆角,而不会对layer的contents设置圆角,除非同时设置了layer.masksToBounds为true(对应UIView的clipsToBounds属性)。

针对这一描述我们可以观看以下示例:

在界面上显示一个设置了图片的按钮,虽然显示时会涉及到按钮背景和图片的分别渲染,但是按钮视图显示到屏幕上时系统实质上是先将按钮背景渲染到屏幕上,然后再将图片渲染到屏幕上来实现这一按钮的正常现实的。所以并没有出现图层混合所以也不会出现离屏渲染现象。

当我们对按钮进行圆角切割时,这样按钮视图显示到屏幕上时系统必须要先将按钮背景色数据处理完成,然后在背景上添加图片数据,最后再对两组数据进行切割处理后才能形成有效的位图数据渲染到屏幕上。所以会出现图层混合也就会导致离屏渲染现象出现。

那么如何避免这一情况出现呢???

我们可以设置按钮背景色与父视图颜色相同,然后单独对按钮的图片进行切割就可以避免离屏渲染情况出现了。

上述只是对离屏渲染情况自己的一些理解,如果有什么不足和错误欢迎指正补充🙏🙏🙏

相关文章

  • 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中离屏渲染的相关内容呢。 1.什么是离屏渲染: 要了解离屏渲染,我们先简单了解一下非离...

网友评论

      本文标题:iOS离屏渲染

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