1. 刷新率
刷新率是计算机显示器、电视和其他显示设备中的技术术语,如下图所示:
其含义是指显示器每秒能够绘制新图像的次数,通常以赫兹(Hz)来测量,如果显示器的刷新率为60Hz,那么它每秒刷新图像60次。刷新率越高,显示器就越能显示屏幕上快速移动的物体,比如动作电影或运动节目。而传统显示设备的刷新率是60Hz,这是一个经过科学验证过的数值,当刷新率为60Hz时人类基本不会感知到屏幕上的图像闪烁。
不同的刷新率具体有什么不同呢,我们可以看下图所示的说明,不同的刷新率代表了每幅图像之间时间间隔不同,例如120Hz刷新率时,理论上每幅图片之间的时间间隔是8.33ms,这显然比30Hz刷新率时每幅图片之间的33.33ms的体验更加。
2. 帧率
首先,什么是帧
,什么决定了帧率
?帧
是一个单一的静止图像,然后将其与其他静止图像(每一个图像略有不同)组合成一个快速幻灯片,以实现自然运动的错觉。帧率
是一秒内显示的图像数量,我们用FPS
(Frame per second
)来表示帧率。
如上图所示,FPS是CPU/GPU与显示设备之间的一个概念,其核心为CPU/GPU。为了生成或渲染一个新的帧,你的CPU和GPU需要一起协同工作,CPU发送指令指定位置和场景中物体的纹理来生成图像,然后你的GPU按照你设定的分辨率将图像分割成像素,并将这些信息发送到显示器上。你的CPU和GPU越强大,它们每秒生成的帧数就越多,而我们看到的显示效果也就越顺爽丝滑。
3. 显示撕裂
现在我们知道了刷新率Hz表示显示器每秒钟刷新图像的次数,帧率FPS是指CPU/GPU每秒钟产生或绘制的帧数。
它们在物理空间上是两个独立的概念,显示器的刷新率(Hz)不会影响CPU/GPU输出的帧率(FPS)。
二者需要协同工作,才可以获取到一个较好的显示效果。
当帧率小于了刷新率,我们又不能获得顺爽丝滑
的显示效果。当然,在帧率小于刷新率时,我们可以让CPU或者GPU在空出来的时间做额外的事情,比如,提高图片显示的分辨率。
当帧率大于屏幕刷新率时,会造成屏幕显示撕裂的效果,俗称为tearing
。我们当然不希望让这样的显示效果呈现在我们的眼前,它已经不仅仅是降低我们感官体验了,而是出现了显示故障。
像下图这样,两帧图像同时出现在了显示器上,造成了显示的错位。
为了解决tearing
问题,基于CPU绘图的显示设备,应用层代码可以获取到DRM panel
的刷新率,然后强制帧刷新率等于屏幕刷新率。而通过GPU进行图像渲染输出的设备,常见的做法是引入vsync
机制。目前做的比较好的是NVIDIA G-SYNC
和AMD FreeSync
。
前者在显卡上放置了一颗用于vsync
通讯的芯片,可以调整显示设备的刷新率以支持显卡的帧率。后者是基于液晶显示器的自适应同步技术,不需要额外的芯片。