美文网首页
图片显示过程与离屏渲染

图片显示过程与离屏渲染

作者: 神气的煤气 | 来源:发表于2020-10-19 11:41 被阅读0次

1.显示原理

为了使显示不受系统总线带宽的限制,现在主流系统大多都是CPU与GPU分工明确,结构图如下,CPU负责处理逻辑与数据,GPU负责图像渲染与显示:


主流系统结构.png

CPU计算好将要显示的内容提交给GPU -> GPU进行渲染与处理提交到屏幕缓冲区(帧缓冲区) -> 显示控制器以一定频率将屏幕缓冲区的内容通过光栅扫描系统显示在屏幕上

图片撕裂原因

因为显示器一般是光栅扫描的,如图:


屏幕光栅扫描.png

而屏幕缓冲区的内容也是实时更新的,当屏幕进行下一次刷新时,屏幕缓冲区的内容还没有变化,当扫描到一半时,屏幕缓冲区的内容刷新,下一半的图像就行变成新屏幕缓冲区的内容,上半部分是旧内容,下半部分是新内容,所以造成图片撕裂


屏幕撕裂缓冲数据示意图.png

解决方法:

\color{red}{垂直同步技术:}当内容渲染完整时,才会更新屏幕缓冲区的内容,这样保证屏幕每一次显示都是一次渲染的内容,但是每一次都会等待下一帧的内容,所以会出现卡顿和情况,俗称\color{red}{掉帧}
\color{red}{双缓冲区:}双缓冲区是在屏幕光栅扫描的同时,将另一帧的内容放在一个新的缓冲区,下一次光栅扫描时,扫描新缓冲区的内容,旧缓冲区渲染下一帧的内容,循环交替

单缓冲区与双缓冲区.png

一般是两者结合,基本能解决掉帧的问题

2.离屏渲染产生

切圆角 模糊效果

我们先来看下面一段代码


离屏渲染代码.png

运行结果:


运行结果.png

我们可以看出,第一张与第三张发生了离屏渲染, 区别在与这个图形的复杂度,当多图层时,切圆角会发生离屏渲染.

正常渲染流程:


离屏渲染流程.png

离屏渲染流程:


正常渲染流程.png

离屏渲染过程其实就是组合图片的过程,我们都知道计算机在渲染图片的时候,只能每个图层逐步渲染,当对多图层时切圆角的过程是:把每一个图层拿出来,处理,放到离屏缓冲区里面,当所有的都处理完之后进行合成,再把处理后的数据放在屏幕缓冲区里面.如图示:


多图层离屏渲染过程.png

模糊效果是一样的原理,只不过是把切圆角的过程变成水平与垂直模糊

圆角解决方案:UI切一个遮罩层 利用贝塞尔曲线重画

打开光栅化

打开光栅化的目的是为了复用已经处理好的内容,比如一个效果, 我们频繁的使用,那么打开光栅化性能会有很大的提升,不用每次都去重新渲染,光栅化离屏渲染时间有限制,超过100ms不使用就会丢弃,还有大小限制,过超过2.5倍像素大小也会失效

组透明度

当透明度不为1的图层进行叠加时,要计算混合部分颜色,设置了组透明度为YES

(layer.allowsGroupOpacity/ layer.opacity)
投影 绘制文字 coreText等

综合来讲,就是多图层处理,为了得到一个处理后的数据,会将每个处理的图层放在离屏缓冲区里组合,再放到屏幕缓冲区里


相关文章

  • 图片显示过程与离屏渲染

    1.显示原理 为了使显示不受系统总线带宽的限制,现在主流系统大多都是CPU与GPU分工明确,结构图如下,CPU负责...

  • 四、离屏渲染

    离屏渲染与正常渲染 屏幕上最终显示的数据有两种加载流程 正常渲染加载流程 离屏渲染加载流程离屏渲染与正常渲染 常⻅...

  • UI视图及UITableView流畅性优化

    一.离屏渲染 1. 在屏渲染和离屏渲染 在屏渲染是指在当前用于显示的屏幕缓冲区进行GPU渲染操作 离屏渲染是指在当...

  • iOS总结

    一、什么是离屏渲染?什么情况下会导致离屏渲染?为什么要尽量避免离屏渲染? 如果要在显示屏上显示内容,我们至少需要一...

  • iOS深入剖析【离屏渲染】原理

    离屏渲染与正常渲染 屏幕上最终显示的数据有两种加载流程 正常渲染加载流程 离屏渲染加载流程 从图上看,他们之间的区...

  • 离屏渲染

    iOS离屏渲染 离屏渲染的定义 如果要在显示屏上显示内容,我们至少需要一块与屏幕像素数据量一样大的frame bu...

  • 离屏渲染,OpenGL的三种渲染方式

    一. 离屏渲染触发的原理:APP在对图片进行渲染,合并的时候会触发离屏渲染,离屏渲染流程先把图层保存在帧缓冲区(o...

  • 离屏渲染

    什么是离屏渲染?如何发生的呢?? 在屏渲染: 指 GPU的渲染操作是在当前用于显示的屏幕缓冲区发生的 离屏渲染: ...

  • 003---离屛渲染

    Offscreen Rendering 离屏渲染 离屏渲染具体过程 通常的渲染流程是这样的: App 通过 CPU...

  • iOS离屏渲染

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

网友评论

      本文标题:图片显示过程与离屏渲染

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