第一,帧数下降。一个显而易见的原因是,如果刷新率是60HZ,那么显卡如果需要等待垂直同步信号才生成下一帧,那么帧数就不会超过60帧/s。但是这还不是问题的全部,如果你的显卡性能并不足以保证每秒60帧是速度呢?那么就会出现在一个垂直同步信号周期内,渲染不出一帧画面的情况,那么显卡就会将上一帧画面输出,而延迟1个周期才输出下一帧画面。如果不开垂直同步你的帧数有50帧的话,开了垂直同步,可能就会只有40帧左右,甚至更少;
第二,操作延迟。原因和帧数下降是基本一样的。你的操作决定了显卡如何生成下一帧画面,而如果这一帧画面需要2、3个垂直同步信号周期才能输出到显示器上,延迟感就会非常的明显,。但是和帧数下降问题不同,即便你显卡速度很快,能够在开启垂直同步的情况下依然保持60FPS,这个操作延迟问题也依然存在。原因在于显卡在等待垂直同步过程中,不生成新帧,而你的操作却是连续的。这样连续的操作却不能生成连续的帧,操作就会出现延迟。
同学们会说,卧槽,垂直同步什么烂玩意不如不开嘛!
没错,所以垂直同步的替代方案,三重缓冲就登场啦!
三重缓冲是个啥东西呢?其实原理很简单。在垂直同步方案中,我们让显卡再收到垂直同步信号之前“暂停”新帧的生成,这就是造成各种问题的原因。那么,要解决问题,就需要显卡不停的生成新帧,没有暂停。
我们再回顾一下帧缓冲器的原理,一块显存中的固定区域暂存帧数据,要保持画面不撕裂,就要保证缓冲区的数据是完整的,但是保证数据完整就不能随时向缓冲区内写数据。那么我们多搞几个缓冲区不就得了嘛!
所以,所谓的三重缓冲,说白了,就是我们有3个帧缓冲器!除去我们正常使用的,向显示器输出信号的缓冲区(A区),我们另外再开辟2个缓冲区(B1、B2区),当A区已满,等待垂直同步信号的时候,显卡生成的下一帧画面,写入到B1区;如果还需要再生成下一帧,则写入B2区;如果再再需要下一帧,则写入B1区。总之,在得到垂直同步信号之前,帧数据总是写入B1或者B2区内,当获得垂直同步信号之后,将最新的一帧写入A1区,输出到显示器。当然,这只是原理,实际上并没有固定用处的缓冲区,哪个缓冲区是最新生成的一帧,哪个就可以作为A区输出帧画面数据。
这样,我们首先解决了帧数下降的问题,由于显卡不需要暂停等待信号才生成新帧,所以理论上帧率就和你不开垂直同步是一样的。帧率不会降低,操作的延迟也就不会有那么明显。虽然最终得到的还是和刷新率一样的画面帧数,但由于画面和操作都是连续的,因此也不会造成额外的操作延迟。
看到这里,现在大家已经能够理解,为什么要开“垂直同步”和“三重缓冲”了吧!
又有一位同学问了,难道三重缓冲就这么完美嘛?当然不是,这世界上任何东西都是有代价的。三重缓冲的问题是显存占用非常大。这很好理解,原本只需要1个的缓冲区,现在变成三个,显存占用率自然也就是三倍。如果你再开个高分辨率,抗锯齿什么的,那显存占用率那是噌噌往上涨的。
所以,要获得完美的效果,大显存的高端显卡是必不可少的,换句话说,掏银子才是王道!
以上就是关于三重缓冲的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-17868-2.html
只要进我岛12海里内
储备黄金