美文网首页
iOS中离屏渲染探索

iOS中离屏渲染探索

作者: SK_Wang | 来源:发表于2020-07-11 11:37 被阅读0次

什么是离屏渲染?

离屏渲染(offscreen-rendering)顾名思义为屏幕外的渲染,即渲染的结果不会直接呈现到当前屏幕上,而是等待合适的时机才会被显示。

正常情况下,在当前屏幕显示的内容,由 GPU 渲染完成后放到当前屏幕的帧缓存区,不需要额外的渲染空间。

假如 GPU 因为面临一些限制,无法把渲染结果直接写入frame buffer,而是先暂存在另外的内存区域,之后再写入frame buffer,那么这个过程被称之为离屏渲染。

离屏渲染的过程

通常的渲染流程是这样的


image.png

在正常情况下,经过CPU的计算以及GPU的渲染之后,不停地将内容渲染完成放入Frame Buffer中帧缓存区,随后视频控制器会读取帧缓存区的数据,经过数模转换,再逐行显示到屏幕上

出现离屏渲染的渲染流程:


image.png

与普通情况下 GPU 直接将渲染好的内容放入Frame Buffer中不同,在某些特殊情况下,需要先额外创建离屏渲染缓冲区 offscreen Buffer,将提前渲染好的内容放入其中,等到合适的时机再将 offscreen Buffer 中的内容进一步叠加、渲染,最后将结果切换到 Frame Buffer 中。

离屏渲染的利弊

优势

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

劣势

  • 内存开支:开辟离屏缓冲区(大小不超过2.5倍屏幕像素大小)
  • 时间和性能开支:从离屏缓冲区拷贝数据到帧缓冲区,上下文切换耗性能,容易出现掉帧的情况

常见的触发离屏渲染的情况

  • 使用了 mask 的 layer (layer.mask)
  • 需要进行裁剪的 layer (layer.masksToBounds /view.clipsToBounds)
  • 设置了组透明度为 YES,并且透明度不为 1 的layer (layer.allowsGroupOpacity/ layer.opacity)
  • 添加了投影的 layer (layer.shadow*)
  • 采用了光栅化的 layer (layer.shouldRasterize)

不过使用光栅化的时候需要注意以下几点:

  1. 如果layer不能被复用,则不必打开光栅化
  2. 如果layer不是静态的,需要被频繁修改,如处于动画中,那开启离屏渲染反而会影响效率
  3. 离屏渲染缓存内容有时间限制,缓存内容100ms内没有被使用,那么它就会丢弃,无法进行复用了
  4. 离屏渲染缓存空间有限,不能超过2.5倍屏幕像素大小
  • 绘制了文字的 layer (UILabel, CATextLayer, Core Text 等)

相关文章

  • iOS中离屏渲染探索

    什么是离屏渲染? 离屏渲染(offscreen-rendering)顾名思义为屏幕外的渲染,即渲染的结果不会直接呈...

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

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

  • 探索iOS离屏渲染

    离屏渲染 探索之前可以先了解一些CALayer的基础 我们都知道使用系统提供的设置圆角方法也会触发离屏渲染 为什么...

  • iOS离屏渲染探索

    一、离屏渲染的由来 GPU渲染的过程中,一般情况会遵循‘画家算法’按次序由远及近的一层一层将结果放置到帧缓存区中,...

  • iOS离屏渲染探索

    在介绍离屏渲染之前,我们先简单描述一下图形渲染。 图形渲染 我们都知道现在的计算机除了有cpu外,还有一个GPU芯...

  • iOS离屏渲染

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

  • iOS性能优化之图片圆角

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

  • 离屏渲染

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

  • iOS离屏渲染解析

    iOS离屏渲染解析

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

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

网友评论

      本文标题:iOS中离屏渲染探索

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