音视频--003 离屏渲染

348 阅读2分钟

image.png

image.png

image.png

image.png

image.png

image.png

独立显卡时代 image.png

image.png

image.png

屏幕撕裂

image.png

image.png

4. 垂直同步:当一帧画面从左到右 从上到下 没有扫描完时 不去渲染第二帧的数据,

扫描完一帧 发送垂直同步信号 (黄线)

image.png

双缓冲策略 垂直同步信号发生时 切换双缓冲区()

image.png

5. 掉帧

image.png

image.png

image.png

image.png

image.png

image.png 核心动画渲染流水线解读:(图片渲染流程)

  1. 拿到UI变化的处理事件,并提交这个变化
  2. 渲染服务 解码 绘制
  3. gpu J进行渲染
  4. 显示

image.png

image.png

9. 普通渲染和离屏渲染

性能:尽量不离屏渲染

离屏渲染,圆角,在操作图层时会触发 什么情况下开辟新的离屏渲染缓冲区? 要做图层合并时需要,也不是都多图层就创建。

离屏渲染缓冲区 性能问题 1.开辟缓冲区 2. 两个缓冲区 -> 结果合并 -> 新的动作 切换上下文

image.png

示例1:遮罩 轮廓1,背景2 =》合成结果3

苹果不能一次拿到

image.png

示例2 磨砂效果 同样也会触发,磨砂效果需要基于 水平模糊 和垂直模糊

image.png

示例3 光栅化 也会触发

image.png

示例4. 圆角,

image.png 虽然有三个图层。叠加,没有合成的操作,遮罩会有

当开启圆角时,会对其他图层都有处理。 需要将他们三个放到离屏缓冲区,进行下一步操作 从离屏缓冲区拿到123,都进行设置圆角,再进行合成显示。 (计算机不能先合成123,再剪圆角)

image.png

离屏渲染好处:。。。

离屏渲染产生的原因是 某些复杂的渲染、功能 无法一次性做到的时候,需要做到中间层的混合,所以才要开离屏渲染。

s