最近一直在接触图形学相关的知识,感觉之前在学OpenGL的时候不需要思考帧缓冲是怎么处理到显示器上的,驱动都帮我做好了,现在在接触vulkan的时候发现自己对Swapchain这个东西的工作原理不是很了解,去网上搜索资料的过程中发现了垂直同步这个知识点,以前玩游戏的时候也经常看到但是不明白什么意思(对不起!我不是一个合格的游戏玩家>-<),觉得自己还是得搞清楚一下,于是整理了一下自己对垂直同步及相关概念的理解

开始正文!

CRT是阴极射线管显示器,以传统的CRT显示屏刷新显示来看,他的工作方式是从上往下从左往右的顺序不断读取某个特定内存缓冲中的数据来刷新屏幕上的显示,渲染程序也同时不断更新该内存缓冲以达到输出动态的画面。

显示器会存在一个刷新频率的因素:以Hz为单位,一般是60Hz或144Hz,由显示器决定,这是一个比较固定的数值,不会有太大的浮动,可能温度会影响这个频率吧(显示器,硬件决定);渲染程序也会存在一个刷新频率的因素: 以FPS(帧每秒)为单位,因为这个刷新是由应用程序控制的,影响因素会很多,比如CPU,GPU的影响,算法的影响,这些都会影响计算一个画面所需要的时间,从而影响该频率(应用程序和CPU,GPU,主要是程序,其次是硬件)

那么当两个频率不一致时,很容易出现几种问题:

1、画面撕裂

什么是画面撕裂呢,画面撕裂就是显示器在显示一个画面时,中间存在一条或多条明显的“分界线”,这一般是由于每秒帧数要高于刷新频率,可能显示器单位时间内显示1个画面,而程序已经计算出了第二帧,显示器在刷新第一帧画面到一半的时候,也就是频幕中间那个位置,剩下的图像已经被应用程序替换成了第二帧,没有办法,第一帧剩下的一半已经被丢弃了,显示器只能将第二帧的下半部分和第一帧的上半部分拼在一起显示,这样就会有一个明显的分界线,这就是画面撕裂

FPS与刷新率同步

FPS高于刷新率画面出现撕裂

2、跳帧

原理也是和画面撕裂一样的,画面撕裂只是在显示过程中丢弃了某帧一部分,跳帧就是正好那一个帧都被完整丢弃了

3、输出延迟

上面两个问题都是因为FPS高于刷新率,那么输出延迟差不多是FPS低于刷新率,显示器在刷新玩一个画面后发现第二帧图像还没计算出来,没办法只能继续显示第一帧内容,导致了延迟,由于可能第二次刷新画面到一半时,第二帧图像来了,这又出现了画面撕裂。

输出延迟是一个很头疼的问题,代表你的CPU、GPU不过关,或者说这个渲染程序算法太复杂了,有一个特殊情况可以避免FPS过低导致的画面撕裂,就是当FPS是刷新率的约数的时候,因为可以凑整的嘛。这大概也是为什么显示器选择刷新率为60Hz或144Hz的原因,因为它们的约数多啊,60一共有11个约数,144一共有12个约数
60Hz:30Hz,20Hz,15Hz,12Hz,10Hz,6-1Hz
144Hz:72Hz,48Hz,36Hz,24Hz,18Hz,16Hz,12Hz,8Hz,6Hz,4Hz,2-1Hz

由于两个频率不一致会出现这些问题,那么需要一些手段来让两个频率达到一致或者说同步,就不会出现还没用就被丢弃这样的性能浪费和画面撕裂这种头痛的问题

垂直同步、Freesync、G-Sync,这里有三种同步方式(sync理解成同步)

 其中垂直同步是早期技术,当时还没办法用应用程序控制显示器的刷新频率,所以这种同步是控制应用程序方面帧输出的频率达到和显示器一样的, 垂直同步相对于其他两个技术的优点就是泛用性强,不存在显示器不支持调整频率就无法使用的情况,不受设备的限制。

采用垂直同步其实就是在FPS高于刷新率的时候压低FPS,而FPS低于刷新率的时候就失去了意义,还是会出现频率不一致时的相关问题,所以在FPS低于刷新率的时候不建议开启垂直同步,开了其实影响不大。

FreesyncG-Sync则是垂直同步升级版,在垂直同步发展了一段时间之后,出现了允许调整刷新频率的显示器,在FPS高于刷新率的时候和垂直同步差不多,但是在FPS低于刷新率的时候,他可以调整刷新率以适应FPS,不一定要调到和FPS一样,只要调成是FPS的倍数就能避免画面撕裂,原因在上文说了
    Freesync是AMD公司的技术,比G-Sync更早出现
    G-Sync是Nvidia公司的技术,G-Sync不免费,支持G-Sync的显示器价格会比支持Freesync的显示器贵些,如果你是nvidia的忠实粉,那你当然会选择G-Sync对吧,(只有小孩才做选择,我全都要,手动滑稽)
    后两者在实现细节上是肯定有差异的但是原理一致

总结一下吧,这些问题都是由于FPS以及刷新率这两个频率的不同导致的,而解决方案就是将两个频率同步,这样既能避免渲染过多且多余图像的浪费,又能保证画面的舒适流畅,相对于垂直同步这个比较年迈的技术,AMD公司的Freesync和Nvidia公司的G-Sync这两个技术优化了垂直同步,原本只能压低FPS来保持同步,现在能同通过调整显示器的刷新率来解决这些画面问题

再说一下,Freesync和G-Sync技术调整刷新率的范围并不是1到最大刷新率的,而是有一个规定范围

参考的文献资料网上有很多,我就不列出来了^-^

最后祝大家工作顺心如意

谈谈我对画面撕裂,垂直同步,Freesync以及G-sync的理解相关推荐

  1. 画面撕裂、卡顿、垂直同步

    FPS:显卡可以支持每秒钟输出多少帧画面 刷新率:显示器最高支持每秒钟显示多少帧画面.刷新率越高的屏幕,在一秒内屏幕上可表达的帧数越多,画面延迟越低. 显卡有2个帧缓存,一个前缓存,一个后缓存.显卡不 ...

  2. linux amd显卡驱动画面撕裂,从此告别画面撕裂 AMD-FreeSync技术解析

    说到"垂直同步"技术,相信很多玩家都知道是啥意思,它可以有效解决游戏中的画面撕裂问题,让画面更平滑.然而它也有一个致命伤:会限制显卡的性能输出,进而造成卡顿.至于具体缘由,还要从显 ...

  3. linux 浏览器 画面撕裂,真不怪显卡 教你解决画面撕裂问题

    原标题:真不怪显卡 教你解决画面撕裂问题 游戏画面撕裂和垂直同步这两个词在最近出现频率还挺高,画面撕裂就是在游戏过程中,画面出现的错位现象.而垂直同步是解决这一问题的游戏设置,比较简单粗暴的办法.今天 ...

  4. 修复Linux下NVidia显卡画面撕裂的问题

    修复Linux下NVidia显卡画面撕裂的问题 为什么会出现画面撕裂 如何解决 修改配置文件 Modprobe.d 为什么会出现画面撕裂 基于我目前的认知,画面撕裂主要是因为没有开启等待垂直同步.于是 ...

  5. (转)Sync Renderer与画面撕裂

    关于Sync Renderer与画面撕裂(tearing & judder)的一些讨论 众所周知,我们深爱的VMR9其实存在种种不便.其一为困扰我们多年的色阶问题(0-255).所幸,在众多高 ...

  6. 解决BurpSuite的画面撕裂问题

    BurpSuite会有一个启动文件,以我这个2023.6.1发布的版本为例 之前尝试过在2022.3的版本,同样的方法在.bat文件里编辑,行不通,建议使用作者在使用的这个版本 把原本的BurpSui ...

  7. Unity3d Linux 下面画面撕裂问题

    在Linux下游戏开发过程中,遇到了画面撕裂(tearing)的问题,一般来说,垂直同步应该是可以解决掉画面撕裂的问题,但是在多屏显示的情况下,即使开启了垂直同步,依然不能解决撕裂问题. 多屏显示是指 ...

  8. STM32F7 LTDC快速切换(重载)图层画面撕裂问题解决

    想模拟手机切屏动画,测试发现切换图层时出现画面撕裂问题. 最后测试发现问题在重载设置问题 我默认使用的BTI0进行立即重载,这个时候LCD可能正在更新数据,如果此时重载就会直接切换到新的图层,就会发现 ...

  9. win7画面撕裂问题

    开始运行Unity画面撕裂,以为是Unity设置问题,后来发现视频也会撕裂,多方查找试了n多种方法后,通过更改Aero主题解决.

最新文章

  1. 用pyhton 写一个简单的三级列表
  2. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令
  3. Struts向JSP中传值
  4. Scala Object
  5. python 遍历两个列表_python 如何在一个for循环中遍历两个列表
  6. 解决eclipse打开报错:failed to create the java virtual ma
  7. 曲线与曲面积分公式整理
  8. 队列,计算机中的排队模型
  9. 开源生产排程aps(Advanced Planning and Scheduling)软件介绍
  10. 图片怎么转换到Excel表格?偷偷安利一个好用的方法
  11. 母婴商品销量分析(附Python源码及Tableau文件)
  12. GSMA选举新的董事会成员,宣布Orange董事长兼首席执行官Stéphane Richard出任主席
  13. Ubuntu20.04设置静态IP
  14. Juc_无juc情况
  15. php 重写url 控制器方法,怎么设置php开源程序伪静态(URL 重写)设置通用方法
  16. go java gc_Golang GC算法
  17. LeetCode 1128.等价多米诺骨牌
  18. 电瓶车不交罚款会有什么处罚
  19. 笔记本电脑无法进入睡眠状态_电脑进入睡眠模式后无法唤醒的原因解析
  20. DICOM协议学习笔记(二)

热门文章

  1. 腾讯云服务器免费更换公网IP的方法 一天可以更换三次
  2. 关闭电脑网页百度右侧百度热搜
  3. i3 10100配什么主板好?
  4. 7-10 大笨钟(10 分)
  5. 固态硬盘SSD学习笔记:SSD综述
  6. u盘启动蓝屏 索尼vaio_笔记本u盘启动,详细教您索尼笔记本怎么设置u盘启动
  7. 孙子算经余数C语言,2020国考行测备考:探索《孙子算经》之剩余定理
  8. 中国工程院岳国君院士被查!
  9. 淘宝API接口,爬虫API接口源码数据汇总
  10. mysql left join用法详解