什么是帧?我们在玩游戏的时候,如果画面变化太大就容易出现错位的撕裂现象。之前的文章学弟跟大家说了帧是什么了,帧其实就是静态画面,1s显示的图片数量就是帧数。比如1s钟连续播放了20张静态画面,那么帧数就是20,帧数的缩写是FPS,20FPS就意味着1秒钟播放了20张静态画面。说到这里大家应该都比较清楚了,帧数指的是显卡一秒钟渲染好并发送给显示器多少张画面,而刷新率指的是显示器逐行扫描画面的速度,他们两个不是相同的概念,不要搞混了。什么是逐行扫描(刷新率)?要知道,显示器播放的画面并不像PPT一样,一张一张地闪过去。而是一行一行的进行扫描的,当显示器收到显卡传来的画面时,会从屏幕的左上角开始一行一行的进行绘制,一直绘制到屏幕的右下角,这就是完整的一帧。然后显示器会将扫描点从屏幕的右下角移回到屏幕的左上角,扫描点移回的这个过程称为重置扫描点(Vblank),VBlank的速度就是我们常说的屏幕刷新率啦!Hz的屏幕那就意味着,这块屏幕能在1s钟内进行完整的次逐行扫描。所以,刷新率越高的屏幕,所能表现出的帧数也就越多,画面延迟也就越低,这也是很多显示器笔电厂商在宣传高刷屏时会说能看到更多画面的原因。什么是帧缓存(FrameBuffer)?看了前面的内容,应该了解什么是帧数什么是刷新率了。帧数是指显卡每秒钟绘制的静态图像数量,而刷新率则是指显示器每秒钟进行完整全画幅逐行扫描的次数。要想了解GSync和FreeSync到底是什么,这里还需要知道一个名词——帧缓存,也叫FrameBuffer。显卡在渲染画面的时候,其性能是固定的,而游戏场景的复杂程度是不同的,不同画面对于显卡本身的运算压力也不同,这就是你在玩游戏时游戏帧率飘忽不定的原因。而显示器的刷新率是固定的,Hz的显示器就是每隔1/秒完成一幅画面的逐行扫描,为了让输出帧能够匹配固定的刷新率,显卡都会设置帧缓存。基本就是两个画面的缓存,一个叫前缓存(FrontBuffer),一个叫后缓存(BackBuffer)。显卡渲染完一幅图像之后并不是直接交给显示器显示,而是先写入后缓存。后缓存写入完毕之后,前缓存会跟后缓存发生交替,后缓存就变成了前缓存,前缓存就变成了后缓存,这就是所谓的帧传递(Bufferswap)。如果显示器的刷新率和游戏帧数是匹配的,那么显卡与前缓存、后缓存、显示器配合默契,并不会出现画面撕裂的情况。前面学弟说了,显卡的帧率会因为游戏画面的难易程度不同而变化,所以实际上并不是那么如愿进行,显卡渲染图片的速度可能会跟显示器不匹配。假设显卡的渲染速度比显示器显示画面的速度快,显示器正在显示的画面还没扫描完,显卡就已经把下一幅画面渲染好了,那么刚刚渲染好的画面会直接被显示器逐行扫描显示,上一幅画面跟新画面出现了重叠,就会出现画面撕裂。还有另一种情况就是显卡的渲染速度比显示器慢,这个时候显示器显示画面的速度要比显卡快,显示器逐行扫描完一张图片之后,下一张图片显卡还没渲染完,显示器只能一直重复扫描上一张画面等待显卡渲染完新图片,在重复逐行扫描之前画面的过程中,显卡突然将新画面渲染好了,也会出现画面撕裂现象。如果显卡的绘图速度跟显示器的刷新率差距比较大,就会出现我们玩游戏时常说的卡屏现象。什么是垂直同步?垂直同步技术前面铺垫了那么多,终于可以说一下这两项技术了。其实看完前面的铺垫内容,大家不用看后面的内容也会对GSync技术以及FreeSync技术有所了解了。在GSync技术以及FreeSync技术中间还有一种防撕裂的技术,大家几乎在所有游戏中都能看到,叫——垂直同步。垂直同步会强制帧传递发生在显示器的重置扫描点阶段,如果你的显卡提前画好了后缓存,此时显示器并没有画完前缓存的画面,就不允许发生帧传递。开启垂直同步之后的画面也会被锁定在你显示器刷新率的数值,假设你的显示器刷新率为60Hz,你的显卡性能足够的情况下,游戏帧率就会锁定在60FPS。如果你的显卡性能不够,达不到显示器刷新率的速度,显示器为了等显卡会再次重复逐行扫描一次前缓存,相当于显示器重复显示了一次画面,也就是跳过了一帧,这就相当于降低了屏幕的刷新率,这样也会出现游戏画面不流畅的情况。自适应垂直同步技术为了解决上述这一问题,NVIDIA推出了自适应的垂直同步技术,在显卡绘图速度高于显示器刷新率时打开垂直同步。在显卡绘图速度低于显示器刷新率时关闭垂直同步,这样就能改善因显卡性能不足导致的画面卡顿了。垂直同步存在一个非常大的弊端——延迟!显卡画好画面之后需要等着显示器进行逐行扫描,不能立马更新显卡绘制的画面。即使显卡已经画完了后缓存里的图像,但还要等前缓存画面扫描完毕才能进行帧传递,这就意味着你看到的画面都是滞后的状态,所以开启垂直扫描后,你看到的游戏画面都会有一定的延迟。快速(无阻塞)垂直同步技术还是有办法解决上述问题的,那就是在前缓存和后缓存之间再加一个缓存——中缓存。虽然能有效地解决上述问题,但显卡性能跟显示器刷新率差别很大的情况下延迟还是不能根治!然后,英伟达又发明了一个技术,叫快速垂直同步,来解决垂直同步与三重缓冲延迟的问题。之前的垂直同步,显卡画完中缓存跟后缓存的画面后就会停下来,等待前缓存扫描完毕再进行帧传递。开启快速垂直同步技术后,显卡画完中缓存跟后缓存的画面后并不会停下来,而是继续画后缓存的画面,后缓存跟中缓存在等待前缓存时会一直进行交换,显示器也会有一张完整的中缓存来替代前缓存进行帧传递,所以也就不会出现画面撕裂的现象。当然,这种垂直同步技术也有很大的弊端,那就是显卡在绘制后缓存时,为了等待前缓存扫描完毕,会有很多的画面被显卡复写后抛弃了,这就导致两个帧之前间隔差异会比较大,就会有卡顿感。自适应显示器刷新率(VRR)既然垂直同步技术不行,显卡厂家们都在努力寻求解决方法,以解决画面撕裂和延迟。然后就有了GSync和FreeSync技术,其中GSync技术来自NVDIA,FreeSync技术来自AMD。工作原理就是当显卡输出帧低于显示器刷新率的时候,强制延长Vblank时间,让显示器持续显示上一帧画面,不进行任何操作,等到显卡渲染完图像之后在允许发生帧传递,以此来让显示器的刷新率动态匹配显卡输出帧。稍微有些复杂,可能看不太明白,简单地说垂直同步是显卡等显示器,而GSync和FreeSync则是显示器等显卡。VRRVRR有三种情况,分别为帧率低于刷新率、帧率接近刷新率、帧率高于刷新率。最理想的状态是帧率接近刷新率,帧率比刷新率低一点,刚好能让显示器延长VBlank时间来解决画面撕裂,并且这种情况下也不存在画面延迟。而当帧率高于刷新率时,Hz的显示器VBlack的时间为1/s,当显卡绘图的速度高于这个数值时,显示器后缓存的画面会被替换,由于没有垂直同步的约束,前缓存扫描完就会跟后缓存进行帧传递,依旧会出现画面撕裂现象。这也就是说,不管是G-Sync还是Free-Sync都是只能解决显卡帧数低于显示器刷新率时出现的撕裂现象,并不能解决显卡帧数高于显示器刷新率时出现的撕裂现象。如果帧率低于刷新率很多,那么显示器就需要延长VBlank很多时间,以降低刷新率来匹配输出帧。G-Sync与Free-Sync的区别G-Sync与Free-Sync的原理其实是一样的,他们都是通过延长VBlank的时间来让帧率匹配刷新率。但它们又有所区别,因为刚开始显示器是没有自适应刷新率这一项技术的,显示器的面板跟驱动板设计之初都是不支持自适应刷新率技术的。为了解决画面撕裂问题,NVDIA就和显示器厂商合作,在显示器内部植入一颗独立的芯片,来完成自适用同步功能。要知道这个芯片以及G-Sync技术都是要收取授权费用的,所以搭载G-SYnc技术的显示器价格都比较高,再就是G-Sync技术是NVDIA搞出来的,当然只支持自家的N卡啦。这就意味着你想体验一下G-Sync技术,还需要搭配NVDIA自家的显卡才能使用。而AMD这边就良心多了,Free-Sync是一个免费的标准,这是DP接口中的一个附加协议,AMD显卡一直沿用了这个附加协议。由于Free-Sync本身不需要付费授权,也不需要单独的芯片,只要你的显示器面板和驱动板支持自适应调节VBlank,就可以使用Free-Sync技术。也就是因为其免费,猫猫狗狗的显示器厂商都能使用这一技术,这就造成了搭载Free-Sync技术的显示器质量参差不齐。而英伟达那边,不仅需要加装单独的控制芯片,显示器厂商还需要配合英伟达进行相关认证,搭载G-Sync技术的显示器都是经过NV调校过的,自适应刷新率体验方面要比Free-Sync好一些。既然Free-Sync免费,老黄也想蹭一下,于是就有了G-Sync认证不带芯片的显示器,使用的Free-Sync技术。这种不带芯片的G-Sync认证显示器叫G-Sync兼容,带芯片的显示器还叫G-Sync,支持HDR的G-Sync显示器叫G-SyncUltimate。总结上文非常系统地说了一下当下为了解决游戏画面撕裂,各大厂商的技术。不过当下来看,不管是G-Sync还是Free-Sync还不能完全解决游戏过程中画面撕裂的问题,当下选显示器不需要奔着两个认证去了。相信不久之后的将来,技术会越来越成熟,显示器的画面流畅度也会相当连贯。
转载请注明:
http://www.aideyishus.com/lkyy/5754.html