浅谈图像撕裂问题及解决方法

图像撕裂问题及解决方法

什么是图像撕裂

就是一张图片在显示的时候分成了两半,即出现断层。如下图:
在这里插入图片描述

图像撕裂是如何形成的呢

我们先从图像的显示说起:
图像 -> CPU将图片解码,交给GPU -> GPU进行图像的渲染 -> 存储到到帧缓存区 -> 视频控制器进行读取帧缓存区信息,并刷新部件(视频控制器只是负责帧缓存区与显示器的对应关系) -> 显示器逐行扫描显示。

在视频控制器进行读取显示图像时,当当前这一帧的内容还未读取完成时,GPU将新的一帧内容提交到帧缓冲区并把两个帧缓冲区进行更新后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂的现象。

既撕裂就是在于显卡输出帧的速度比显示器快,显示器的处理速度跟不上显卡,在显示器处理显卡丢过来的第1帧的时候,第2帧就又到了,导致同一个画面同时出现1、2两帧,撕裂就产生了。

图像撕裂如何解决呢

1.垂直同步

垂直同步又称场同步(Vertical synchronization),从CRT显示器的显示原理来看,单个像素组成了水平扫描线,水平扫描线在垂直方向的堆积形成了完整的画面。显示器的刷新率受显卡DAC控制,显卡DAC完成一帧的扫描后就会产生一个垂直同步信号。

简而言之:垂直同步就是加锁,在当前读取的帧数据结束之前,不会读取下一帧的数据。

2.双缓冲区

双缓冲区是在帧缓存区中开辟两个缓冲区,一个缓冲区通过视频控制器进行当前帧数据的读取显示,另一个缓冲区进行接收下一帧GPU渲染的图像。两个缓冲区都执行结束,然后再交换缓冲区。

弊端:使用以上两个解决方案后,图像撕裂问题解决了,但是有引发了一个新问题掉帧/卡顿

掉帧/卡顿是如何生成的

在这里插入图片描述
在使用垂直同步和双缓冲区时,都有一个等待显示完成的过程,从而刷新的时间变慢,刷新频率减少,眼睛看到的图像就会变成卡顿。

三缓冲区

在双缓冲区的基础上再添加一个缓冲区,提高交换速率,减少卡顿。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值