美文网首页
iOS 离屏渲染随笔

iOS 离屏渲染随笔

作者: 阿毛呀_ | 来源:发表于2021-12-27 10:16 被阅读0次

1:什么是离屏渲染?

当image buffer需要进行一些额外处理(如圆角、毛玻璃或其他滤镜) 并且进行额外处理后无法直接将数据传递至frame buffer进行显示,需要将处理后的数据暂存至offscreen buffer中,再由offscreen buffer 传递至 frame buffer , 最终显示在屏幕上。这个过程称为离屏渲染。

2:如何使用Xcode查看哪些视图发生了离屏渲染

在IPhone模拟器Debug菜单中勾选color off-screen Rendered 即可

3:触发离屏渲染的两个条件:

1:图片(图层)需要额外处理
2:数据需要暂存至offscreen buffer

4:离屏渲染的本质

渲染中的常用算法:油画算法
渲染操作都是由CoreAnimation 的 Render Server模块,通过调用显卡驱动所提供的OpenGL/Metal接口来执行的。
通常对于每一层layer,Render Server会遵循“画家算法”,按次序输出到frame buffer,后一层覆盖前一层,就能得到最终的显示结果
(iOS中,设备主存和GPU的显存共享物理内存,这样可以省去一些数据传输的开销)
tips:如果在60Hz刷新率下,16ms内无法完成渲染,则会导致掉帧

5:什么时候会离屏渲染

提到为何会形成离屏渲染,可能很多人就会想到圆角加裁剪等。但是,并不是所有的圆角+裁剪都会产生离屏渲染的。圆角裁剪的时候,backgroundColor, contents, borderWidth, borderColor,如果都设置了这些属性就会产生离屏渲染
1:一旦设置圆角+裁剪,如果视图一定是有contents(图片、绘制内容、有图像信息的子视图),加上背景色或者边框,就会产生离屏渲染。
2:设置圆角+裁剪,加上子视图位于裁剪区域,也会离屏渲染。
3:仅有圆角+裁剪,和contents是不会离屏渲染的。经典例子就是【button setImage】的了,只需要对button.imageView.layer.cornerRadius和button.imageView.clipsToBounds进行就不会离屏渲染。

6:如何高效的使用离屏渲染

在无法避免的情况下,如何高效的使用离屏渲染
栅格化,在CALayer中有一个shouldRasterize属性,开启后layer会启动栅格化
好处是通过开辟新内存区域缓存位图,提高性能。

之前看到的几篇关于离屏渲染不错的文章。记录总结一下,笔记分享如上。

相关文章

  • iOS离屏渲染

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

  • iOS离屏渲染解析

    iOS离屏渲染解析

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

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

  • iOS-离屏渲染探索

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

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

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

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

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

  • 三、iOS离屏渲染

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

  • iOS 离屏渲染随笔

    1:什么是离屏渲染? 当image buffer需要进行一些额外处理(如圆角、毛玻璃或其他滤镜) 并且进行额外处理...

  • iOS性能优化之图片圆角

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

  • 离屏渲染

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

网友评论

      本文标题:iOS 离屏渲染随笔

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