垂直同步是干嘛用的?究竟要不要打开?

2019-11-08 05:38 来源:未知

  顾名思义,首先得有什么东西是“垂直”的,服装设计手稿然后另外一样东西和这个垂直的什么东西同步,合起来,才叫垂直同步。

  大家都知道,在远古时代的CRT显示器的显示原理是用电子枪扫描荧光屏来发光。参考上图,电子枪从A1开始,从左到右,从上到下,当扫描到D4位置的时 候,屏幕上完整的一副图像就完成了。当电子枪扫描到D4的时候,显卡会发出 一个叫Vertical synchronization的信号,告诉显示器,已经完成了一帧画面的扫描,要回到A1开始扫描下一帧了。这就是“垂直同步信号”。

  这个垂直同步信号,是由显卡发出给显示器的,一方面,告诉显示器,要回到A1位置啦,另外一方面,也通知显卡,准备输出下一帧画面。

  到了液晶显示器时代,没有电子枪这个东西了,但是垂直同步信号却依然需要,不然显卡就无法知道在什么时候才可以输出下一帧画面,显示器也无法知道什么时候可以开始处理一帧画面。

  很多人都搞不清楚,液晶显示器的刷新率,和响应时间的区别,往往将两者混为一谈。实际上,刷新率是指液晶显示能够在什么频率的垂直同步信号下工作,一般是 固定60HZ,但液晶电视之类的显示器,能以24HZ、25HZ、30HZ、 60HZ、120HZ等许多刷新率工作。液晶显示器也有自己的IC芯片,它接受到的数字信号,也需要一定信号处理过程才能最终显示在屏幕上,所以,即 便是液晶显示器也同样需要垂直同步信号来告诉他什么时候才完整的接收到了一 帧画面。说白了,刷新率对于液晶显示器来说,也是绝对必要的。

  而响应时间是指液晶像素发生转换时所需要的时间。比如说一个像素正显示红色,而下一帧画面要改成绿色,那么这个像素从红色变为绿色所需要的时间,就是响 应时间。如果响应时间过长,就会造成颜色的不准确,在很短的一瞬 间这个像素既不是红色也不是绿色,而是介于两色之间的过渡色,这就是“拖影”现象出现的原因。

  好啦,我们搞清楚了什么是“垂直同步信号”以及它的作用,下吗就要问,是什么东西要和这个垂直信号去同步呢?

  不 要被上面复杂的图表吓唬住了,其实显卡工作流程很简单。首先,它接受CPU和内存传来的数据,然后经过BLABLA的处理,最后,生成一帧画面,然后重复 之前的过程,生成下一帧画面,如此重复。一般科普,大概也就说到这里 了。但实际上,一个关键性的东西,很少有人提及,就是右下角那个“帧缓冲器”。

  以 下内容略有烧脑。 帧缓冲器本质上就是显存中一组内存数据(缓冲区),用来存储一帧画面每个像素点的数据。显卡将缓冲区数据依次输出到显示器,当全部输出完毕之后,发出一个 垂直同步信号,然后输出到显示器,再发出垂直同步信号,如此反复。实际上整个垂直同步,双重,三重缓冲概念,本质上就是“帧缓冲器数据输出规则”。

  缓冲区的数据,是由显卡 的光栅操作单元 生成的。假设我们的显卡速度很快,每秒生产的帧数肯定要超过显示器刷新率。那么在实际数据处理过程中,缓冲区的数据,在被输出之前,就被显卡不断的刷新重 写。但是缓冲区并不是“先清空再写入数据”,这太没有效率,而是采用“新数据覆盖老数据”的方式。

  我们来假设,缓冲区已经有一副完整的帧画面(A帧),然后显卡生成了下一帧画面(B帧),新一帧的数据开始写入缓冲区,写到一半的时候,垂直同步信号来 了,于是缓冲区的数据被输出到显示器。但问题是,这时缓冲区的数据,是由一半A帧和一半B帧数据合成的。因此最终显示器上显示出来的画面就不是一副完整的 画面,这就是“画面撕裂”现象出现的原因。

  好啦,我们现在需要解决“画面撕裂”问题,我们怎么解决呢?有聪明的同学说了,这还不简单,让帧缓冲区里的数据始终保持一副完整的画面不就可以了嘛。没错,这就是“垂直同步”的原理。

  实际运作是这样的,当显卡生成了一副完整画面并写入了帧缓冲区之后,暂停!,开始等待垂直同步信号,当得到垂直同步信号后,再继续渲染下一帧写入缓冲 区。这样“一个画面一个垂直同步信号,画面和信号同步起来”,就可以保证在缓冲区的数据始终是一副完整的画面,不会出现前后帧混合的问题。

  第一,帧数下降。一个显而易见的原因是,如果刷新率是60HZ,那么显卡如果需要等待垂直同步信号才生成下一帧,那么帧数就不会超过60帧/s。但是这 还不是问题的全部,如果你的显卡性能并不足以保证每秒60帧是速度呢?那么就会出现在一个垂直同步信号周期内,渲染不出一帧画面的情况,那么显卡就会将上 一帧画面输出,而延迟1个周期才输出下一帧画面。如果不开垂直同步你的帧数有50帧的话,开了垂直同步,可能就会只有40帧左右,甚至更少。

  第二,操作延迟。原因和帧数下降是基本一样的。你的操作决定了显卡如何生成下一帧画面,而如果这一帧画面需要2、3个垂直同步信号周期才能输出到显示器 上,延迟感就会非常的明显。但是和帧数下降问题不同,即便你显卡速度很快,能够在开启垂直同步的情况下依然保持60FPS,这个操作延迟问题也依然存在。 原因在于显卡在等待垂直同步过程中,不生成新帧,而你的操作却是连续的。这样连续的操作却不能生成连续的帧,操作就会出现延迟。

  三重缓冲是个啥东西呢?其实原理很简单。在垂直同步方案中,我们让显卡再收到垂直同步信号之前“暂停”新帧的生成,这就是造成各种问题的原因。那么,要解决问题,就需要显卡不停的生成新帧,没有暂停。

  我们再回顾一下帧缓冲器的原理,一块显存中的固定区域暂存帧数据,要保持画面不撕裂,就要保证缓冲区的数据是完整的,但是保证数据完整就不能随时向缓冲区内写数据。那么我们多搞几个缓冲区不就得了嘛。

  所以,所谓的三重缓冲,说白了,就是我们有3个帧缓冲器!除去我们正常使用的,向显示器输出信号的缓冲区(A区),我们另外再开辟2个缓冲区(B1、 B2区),当A区已满,等待垂直同步信号的时候,显卡生成的下一帧画面,写入到B1区;如果还需要再生成下一帧,则写入B2区;如果再再需要下一帧,则写 入B1区。总之,在得到垂直同步信号之前,帧数据总是写入B1或者B2区内,当获得垂直同步信号之后,将最新的一帧写入A1区,输出到显示器。当然,这只 是原理,实际上并没有固定用处的缓冲区,哪个缓冲区是最新生成的一帧,哪个就可以作为A区输出帧画面数据。

  这样,我们首先解决了帧数下降的问题,服装设计手稿由于显卡不需要暂停等待信号才生成新帧,所以理论上帧率就和你不开垂直同步是一样的。帧率不会降低,操作的延迟也 就不会有那么明显。虽然最终得到的还是和刷新率一样的画面帧数,但由于画面和操作都是连续的,因此也不会造成额外的操作延迟。

  看到这里,现在大家已经能够理解,为什么要开“垂直同步”和“三重缓冲”了吧?

  又有一位同学问了,难道三重缓冲就这么完美嘛?当然不是,这世界上任何东西都是有代价的。三重缓冲的问题是显存占用非常大。这很好理解,原本只需要1个 的缓冲区,现在变成三个,显存占用率自然也就是三倍。如果你再开个高分辨率,抗锯齿什么的,那显存占用率那是噌噌往上涨的。

  所以,要获得完美的效果,大显存的高端显卡是必不可少的,换句话说,掏银子才是王道!

  这是我本人目前在用的硬件配置,一直开着垂直同步和三倍缓冲,从实际使用情况来说,没有开之前画面尤其是坦克的细节总是有些类似于波纹的感觉,自从开了垂直 同步和三倍缓冲再没有发现这一现象,而且目前各种工作状况一切正常,所以对于是否该关闭垂直同步和三倍缓冲,我是持保留意见的,至少,我自己坚持开。可以 这么说,如果你的fps远远超出显示器的刷新频率,而且你的显卡资源足够,那么你可以同时开启垂直同步和三倍缓冲,至少从我的情况来说,开启之后效果更好,各位具体的硬件情况才是决定是否开启的因素,而不是说单纯的开启与关闭好还是不好,这也因人而异。

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址 http://www.hgmw0088.comhttp://www.hgmw0088.com/a/fenxiang/20191108/68708.html

转载本站原创文章请注明来源:优界网_互联网IT资讯

分享到:0
相关推荐