美文网首页IOS视觉
02-图像撕裂,掉帧及解决方法

02-图像撕裂,掉帧及解决方法

作者: 食堂厨子高大彪 | 来源:发表于2020-07-06 19:21 被阅读0次

图像撕裂原因及解决方法

image.png

先说说图片显示的过程,CPU将图片解码,交给GPU -> GPU进行图像的渲染 -> 存储到到帧缓存区 -> 视频控制器进行读取帧缓存区信息,并刷新部件(视频控制器只是负责帧缓存区与显示器的对应关系) -> 显示器逐行扫描显示。
视频控制器处理缓存第1帧的时候,读取了一部分,帧缓存区更新成了第二帧了,这时,再读取就读取了第2帧的数据,所以看起来像撕裂一样。

怎么解决呢

  1. 垂直同步
    其实是将帧缓存区加锁。水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。当前帧不读取完毕,就不发出读取下一帧的信号。
  2. 双缓冲区
    双缓冲区是在帧缓存区中开辟两个缓冲区,一个缓冲区通过视频控制器进行当前帧数据的读取显示,另一个缓冲区进行接收下一帧GPU渲染的图像。两个缓冲区都执行结束,然后再交换缓冲区。

掉帧

掉帧其实就是卡了,这是垂直同步和双缓存区必然遇到的问题(在cpu和gpu处理不过来的时候),
每帧画面的处理时间大概在16.7ms(1s/60 ≈16.7ms),当超过这个时间,cpu和gpu没准备好第2帧的数据,就会出现掉帧。


image.png

三级缓存区

为了减少掉帧,注意不是解决,是减少掉帧。引入了三级缓存区。
CPU /GPU 会有闲置时间, (A显示屏幕, B也渲染好.),这时CPU/GPU可以再用C进行缓存,减少掉帧的几率。

总结:屏幕卡顿原因:

  1. CPU/GPU 渲染流⽔线耗时过⻓->掉帧

  2. 垂直同步Vsync + 双缓存区 DoubleBuffering 以掉帧作为代价=>屏幕撕裂

  3. 三缓存区: 合理使⽤CPU/GPU 减少掉帧次数;

相关文章

  • 02-图像撕裂,掉帧及解决方法

    图像撕裂原因及解决方法 先说说图片显示的过程,CPU将图片解码,交给GPU -> GPU进行图像的渲染 -> 存储...

  • 图像撕裂、掉帧

    1 图像撕裂 图像撕裂就是一张图片显示的时候,出现了上下断层,如下图: 1.1 出现撕裂的原因 首先我们来看图像显...

  • 图像撕裂、掉帧及三级缓存

    图像撕裂 图像撕裂就像图中所示,同一副画面显示的内容无法上下对齐 屏幕的更新频率是固定的,通常是60Hz。显卡效能...

  • 撕裂/掉帧

    图像显示大致过程: CPU/GPU处理 → 存放到帧缓存区 → 视频控制器去帧缓存区中读取 → 其他一些列的处理 ...

  • 深入理解IOS离屏渲染

    目录:图像显示原理1.1 将图像显示到屏幕的流程1.2 显示器显示流程UI卡顿、掉帧2.1 屏幕撕裂 Screen...

  • 计算机渲染原理及图像撕裂掉帧

    1. CPU和GPU的角色 CPU:计算机整个系统控制、运算和资源的调配,运算核心。会处理复杂逻辑和数据。CPU数...

  • iOS图像撕裂和掉帧问题分析

    1. 什么是图像撕裂 图像撕裂是我们所观看到的一张图片发生上下错位,出现了明显的断层,如下图: GPU进行渲染到显...

  • 视频撕裂及掉帧的原因

    显卡 显卡(英语:Video card、Display card、Graphics card、Video adap...

  • iOS 渲染流程和屏幕卡顿原因

    屏幕卡顿 屏幕卡顿是指图形显示到屏幕上时,出现了图像撕裂、掉帧等问题 卡顿原因 图形、图像显示到屏幕上,需要经过C...

  • N0.5 - 图像撕裂 、掉帧、 iOS中的渲染流程

    1、撕裂 撕裂原因:其本质是拿到图像后,GPU进⾏渲染->帧缓存区⾥ ->视频控制器->读取帧缓存区信息(位图) ...

网友评论

    本文标题:02-图像撕裂,掉帧及解决方法

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