该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

从显卡怎么输出画面到显示器开始。显卡显存里有两个帧缓冲区,储存一帧画面像素的颜色信息。GPU往后部缓冲区写图像数据,显示器刷新从前部缓冲区读图像数据。前后缓冲区互相交换。

no sync:

GPU绘制完一帧,立刻交换缓冲区,继续绘制下一帧。显示器以60hz固定间隔刷新,当刷新扫描到一半发生前后缓冲区交换。屏幕一半是上一帧图像,一半显示下一帧图像。从中间断开。

垂直同步:

每当显示器每次刷新扫描到右下角最后一个像素时,会发出一个垂直同步信号。GPU绘制完后部缓冲区里的画面之后,开始等待垂直同步信号,只有得到垂直同步信号之后才发生缓冲区交换。这样屏幕上永远显示完整的帧。不会出现前后帧混合的错误画面,同时每一帧对应一次屏幕刷新,最大帧数被锁定至屏幕刷新率。

但vsync造成两个问题。一,增大输入延迟,每当GPU绘制完一帧,要等待上一帧刷新完才会被交换给前部缓冲区,再等到下一次显示器刷新时才能显示在屏幕上。这样永远延迟1个周期,造成额外的输入延迟。二,卡顿,60hz的显示器每隔16.7ms刷新一次,如果某一帧生成需要17ms超过16.7ms,那要等到下一次刷新33.3ms后才能显示一帧新的画面。帧间隔从16.7->33.3ms突然翻倍造成卡顿感。

g-sync/freesync:

GPU绘制完一帧,立刻交换缓冲区,继续绘制下一帧。显示器刷新没有固定间隔,显卡控制显示器刷新,每当新的帧绘制完立即进行一次刷新,没有新帧不刷新。消除撕裂,不引入输入延迟和卡顿。

当帧生成太快,超过显示器所能做到的最小刷新间隔。表现为帧数超过刷新率上限,这时有两个选项,等待垂直同步信号,或者不等待。效果等同垂直同步和nosync。(这也就是g-sync+垂直同步的效果,在g-sync范围内垂直同步不起作用)

NV fastsync:

驱动层的三重缓冲,顾名思义三个缓冲区。相当于有两个后部缓冲区和一个前部缓冲区,两个后部缓冲区互相交换,确保GPU永远有一个可写入的后部缓冲区。前部缓冲区与最近写入的后部缓冲区交换。

能消除撕裂,但不能消除卡顿。在fps远大于刷新率时,输入延迟较普通垂直同步小,但较g-sync/freesnyc/no sync更大。

对于g-sync/freesync用户的最佳设定。关闭垂直同步,使用游戏内限帧到比最大刷新率略低的帧数,比如144hz显示器锁定到最大140fps。游戏内限帧通过调整游戏引擎本身,来控制帧数,不增加输入延迟。而外部帧数限制器,比如frtc rtss,通过线程阻塞等方法来延迟帧,会造成输入延迟。而对于没有限帧选项的游戏来说,外部帧数限制器依然比直接开启垂直同步更好,因为很多游戏的垂直同步实现有问题,开启垂直同步可能造成原因不明的性能下降。