在了解垂直同步之前,我们需要了解一些基础概念。

【帧的概念】

请输入图片描述
这个玩具想必各位小的时候都玩过,就是画很多具有微小变化的单张画,然后按照顺序连续翻页,就会达到一种“动画”的感觉。

我们的显示器也是这样的,你看显示器上是“动画”,就和上面那个简易玩具一样,显示器也是靠连续播放无数张静态画面来达到一个视觉上的错觉,通过人眼的视觉暂留,让你的眼睛误以为这是动画。

显示器都有一个自己的刷新频率,60Hz的显示器一秒钟就是刷新60张画面,144Hz显示器就是一秒钟刷新144张画面。这当中,每一张画面我们都称之为一帧。

显示器的刷新率是固定的,比如60Hz显示器那么他就是固定每隔1/60秒刷新一帧。

【显卡的作用】

显示器只是一个显示设备,他并不知道自己要显示什么,所以必须有东西来告诉他你要显示什么画面,这个东西就是显卡,显卡的作用就是绘制“帧”,然后把帧发给显示器,显示器收到帧之后,开始往显示器上显示。
请输入图片描述

【逐行扫描】

显示器刷新一帧的时候并不是一次性把整个画面全部刷新出来,他是从上到下一行一行逐渐把图片绘制出来的,具体的是什么情况,一张gif就能很好的说明了。除了逐行扫描外还有隔行扫描,至于区别就是一个是一行一行画,一个是隔着一行画。目前大多数显示器采用的都是逐行扫描。老设备带宽不足只能隔行扫描,现在的新设备基本都是逐行扫描了。
请输入图片描述

该GIF来自Bilibili up主啃芝士视频:1080P与1080i的区别
也就是说60HZ的显示器并不是说屏幕一秒闪60次画面,而是60HZ的显示器一秒可以逐行扫描60次,你看到的帧是一行一行画出来的,而不是一张一张闪的。

【显示器的前缓存和后缓存】

因为显示器是固定刷新率的,比如60Hz显示器就是固定每隔1/60秒逐行扫描绘制完成一帧,显示器只管显示画面就行了,所以他是固定的,但是显卡渲染画面就是有波动的,因为你在玩游戏的时候,画面一直在变化,画面的复杂程度也在变化,但是你的显卡性能是不变的,所以就会导致简单场景显卡输出帧数高,复杂场景帧数输出低,举个很简单的例子,你在游戏里看着一个油桶,由于油桶画面简单,显卡一秒输出了100帧,但是突然油桶爆炸了,碎片乱飞,这时候画面突然复杂,显卡在这一秒就只输出了80帧。所以显卡的输出帧是波动的。

另外显卡输出来的帧数间隔也不一样,比如第一帧与第二帧中间间隔0.01秒,第二帧与第三帧结果间隔了0.04秒,第三帧与第四帧间隔0.03秒,他并不是像显示器那样固定刷新率,他会受到你游戏的波动影响。前半秒1帧,后半秒59帧,那你看帧数其实也是60。但是前半秒的帧生成时间就很长了。

那么一个固定输出的显示器和一个波动的显卡搭配,为了避免冲突,我们不能让显卡直接去给显示器绘图,而是添加了一个缓存,这就是显示器的前后缓存,显示器在默认情况下是有2个缓存的.

显示器会读取前缓存内的图片,并利用逐行扫描显示到显示器面板上,而显卡这时候会去绘制后缓存里的画面,然后显示器绘制完前缓存的画面,就会去读取后缓存里的画面,然后显卡去绘制前缓存里的画面。
请输入图片描述

【画面撕裂】

那么这里就有一个很有趣的情况,因为逐行扫描需要时间这个时间是固定的,但是显卡刷新不是固定的,那么显卡很有可能会:抢跑,也就是绘图速度超过显示器。
请输入图片描述
假如显示器还没有显示完前缓冲的画面【1】,还在逐行扫描进行中只画了一半,显卡已经画好了后缓冲的画面【2】。这时候显示器正在画前缓存的画面【画了一半的1】,显卡不会停下来,他画完后缓存【2】会直接过来覆写前缓存【开始往前缓存写3】

这里就会出现一个情况:显示器上半部分是第一帧【半个1】因为还没逐行扫描完,第二帧【2】在后缓存里显示器还没有读取到,而显卡开始往前缓存里写第三帧【3】,那么显示器的下边就会显示第三帧的画面【半个3】。

这就是画面撕裂现象,具体的效果看图你们就知道了
请输入图片描述

【错帧现象】

就还拿上面那个123举例,显卡输出3帧,显示器走3hz,【1】在画面上就显示了一半,【2】被写入了后缓存等待输出,【3】在画面上也显示了一半,那么就很有意思了,显示器第一Hz的时候,上面有半个1,下面半个3,第二Hz是个完整的2,第三Hz是完整的3,所以实际上你并没有看见完整的3帧,虽然你的电脑显示是3fps,你的肉眼只看见了2.5帧,

所以虽然很多人对于游戏画面流畅的定义是60FPS,但是你要清楚的就是,在你不能保证显卡输出的帧和显示器刷新率完美契合,那么显卡输出60FPS实际上是不流畅的,因为你的显示器一直会发生错帧现象,你可能就会看到50帧的画面,所以这就是为什么,保证游戏画面流畅的帧数需要高于60而不是等于60。

【帧生成时间】

举个例子,以下帧数单指显卡输出帧,而不是显示器的刷新率

第一组:第一帧与第二帧间隔了0.3秒,第二帧与第三针间隔了0.1秒,第三针与第四帧间隔了0.2秒,第四帧与第五帧间隔了0.4秒。

第二组:每一帧都间隔0.25秒

那么这里帧与帧之间的间隔就被我们称之为帧生成时间。

那么你从面板上看,两者都是5 fps,都是一秒5帧,但是由于前者的帧数不平滑,导致实际上流畅度也不如后者。就是因为帧生成时间不平滑。

【垂直同步】

那么为了避免显卡“抢跑”这种事情发生,这时候就有一项技术,叫垂直同步,垂直同步的作用就是强制显卡和显示器同步,如果显示器还在显示前缓冲,显卡画好了后缓冲,那这时候禁止显卡进行绘图,直到显示器把前缓冲的画面显示完整了,显示器跳后缓冲后,才允许显卡去绘制前缓冲。
简单理解就是强制显卡的刷新率和显示器刷新率完美契合。那如果你是60HZ显示器,开了垂直同步就会被锁60了。
这样一方面可以解决画面撕裂现象,因为不会出现缓冲还没画完被覆写的情况了。

另一方面也可以解决错帧现象。这里你可以做一个实验:

不开垂直同步,锁定60帧,然后玩一分钟,再打开垂直同步,再玩一分钟,你会发现,同样是60帧,开了垂直同步会比不开画面流畅,因为不会发生错帧了。

除此之外,由于垂直同步的开启,强制每帧间隔完全一样,这样因为帧生成时间不平滑导致的不流畅也会解决。

【垂直同步的弊端——鼠标延迟】

但是,垂直同步这么好,为什么很多人都不开啊?这里就要提到一个鼠标反馈了。假如你移动了1CM的鼠标,这时候,电脑收到这个消息,直接把移动1CM鼠标输出给显卡,显卡收到后,把鼠标移动这个画面输出给显示器,那么这里就是瞬间完成,所有的请求都不会被延后,延迟就是电路延迟而已。

但是如果你开了垂直同步,显卡绘制完成后缓冲后,显示器还没显示完前缓冲,显卡只能在这里等着,那么你鼠标移动1CM这个指令会和显卡一块在这里等着,直到显示器绘制完成前缓冲,你移动鼠标这个画面才会被写入显示器后缓冲。

那么等于你操作鼠标的指令,路途上需要等个红绿灯,这样无形间就会增加延迟,所以打开垂直同步后,你会发现鼠标有粘滞感,就感觉你的操作反馈到屏幕上都要滞后那么一点点。所以这里就是为什么不推荐第一人称射击类游戏和MOBA游戏打开垂直同步。

【三重缓冲】

那么这里有一个名词就可以解释了,那就是三重缓冲,默认情况下显示器只有2个缓冲区,而打开三重缓冲后,显示器就有了3个缓冲区。这样你的鼠标移动指令的滞后会被提前,但是治标不治本,这顶多就是减少道路上红绿灯的时间,你和关闭垂直同步那种无红绿灯比,还是有鼠标延迟。所以打开三重缓冲后,只能缓解鼠标延迟,但是不能根治。
请输入图片描述

【G-sync与freesync】

既然垂直同步有鼠标延迟,那么我们想另一个办法来解决画面撕裂和错帧,既然显卡是波动的,那么我们让显示器也波动不就行了么,这就是G和F技术,搭载G-sync和freesync的显示器可以动态调整他们的刷新率而不是固定的1/60秒或者1/144秒扫描完一张画面,他会去适应显卡的输出帧,而不是在这里等着,说白了就是:显示器刷新率变频技术。这样的话不仅可以解决画面撕裂,解决错帧,还可以保证几乎没有的鼠标延迟。
但是因为是显示器去适应显卡,所以如果你的显卡输出帧远高于显示器刷新率的时候,G和F只能解决显示器本身刷新率内的错帧和画面撕裂情况,高于显示器刷新率的帧数就不会被显示出来了,这些帧就被浪费掉了。所以如果你的显示器开启了G或者F,推荐就把帧数限制在和你的显示器一样就行,但是不要开垂直同步。

也就是说,当你的游戏帧数无论是高于显示器还是低于显示器刷新率,G和F都可以直接解决显卡抢跑导致的错帧现象和画面撕裂现象,而错帧现象解决后你的画面会更流畅。除此之外,由于显示器可以去适应显卡,那么显卡的帧生成时间不均匀的现象也会得到缓解。你的画面也会更加流畅。

但是这里就有个问题,G-sync技术是N卡专用的,你必须要用N卡,配合G-sync显示器才能激活这项功能,Freesync技术是A卡专用,你必须要使用ATI(AMD)的显卡才能激活这项功能。而这里就又有一个问题,G-sync是需要在显示器内植入芯片的,而且需要不小数目的授权费,所以G-sync的显示器起步价都大多是3000了,而Freesync虽然是免费的,只需要显示器厂家去和AMD授权一下就行,但是A卡的高端力量又不足,最强的VEGA64也就是摸到1080的尾巴。所以G太贵,F又没什么好显卡搭配,最后说到底还是钱包不足的问题。

【Freesync和G-sync谁好谁坏?】

首先,从理论层面讲,二者的实现原理几乎相同,所以如果是严格按照设计标准涉及的Freesync和G-sync最后的效果是完全一样的。

但是不一样的是Freesync是一个开放标准,是个显示器厂家只要选择支持Freesync的面板就可以使用。而GSYNC模块相当于一个完整的驱动板,GSYNC显示器的核心部件接近于交钥匙工程。老黄负责参与显示器的工程研发,而不是卖你个标准的模块等你做好显示器完了给你做个认证。比如Overdrive,ULMB的参数整定等都由老黄负责完成。同面板不同厂商的GSYNC显示器在游戏性能以及功能方面几乎没有区别。Freesync的驱动部件由厂家自己或者找外包完成,同面板不同产品性能品质可以差几十条街,极端例子FS2735 VS 马云DIY。

而不同面板的性能又层次不齐,就导致各种黑屏,闪屏,莫名其妙的延迟等现象,而G-sync的显示器,从研发,设计,量产都是由NV全程参与协调的,同时还需要往显示器内部植入专用芯片,也就是G-sync实际就是一个高门槛,这个门槛就决定了你的体验肯定比层次不齐的Freesync强,但是如果使用的是顶尖的Freesync面板,那其体验一点都不比G-sync差,所以评论区有个比较专业的老哥就说了,其实G-sync就是买个放心,保证这个技术肯定能带给你良好的体验,而Freesync就有点抽奖的意思了,运气好,这个面板完美适配Freesync,运气不好,体验很差,这个功能干脆就不开。

【N卡能不能用Freesync显示器?A卡能不能用G-sync显示器?】

经常有人问我,大佬大佬,我的显示器是Freesync的,但是我要买的显卡是N卡,会不会不支持点不亮啊,这个问题实际上你根本不需要担心,G和F只是显示器的一项附加功能,你的显卡和显示器不匹配的话,只是不能开启这项功能罢了,你还是可以把它当成一个普通显示器来用,就当这项功能不存在就行了。比如你用N卡搭配F的显示器,完全可以正常用,只是你开启不了Freesync这项功能罢了,A搭配G同理。

那么全文到这里也就结束了,相信大家也了解了什么是垂直同步,以及显示器的工作原理,那么话题到这里就有了另一个话题:144显示器的提升到底有多明显?这个文章那就等日后有空再写了。


全文完,感想您的耐心观看!!!

本文转自知乎

最后修改:2019 年 06 月 23 日
如果觉得我的文章对你有用,请随意赞赏