你是否正在寻找关于三重缓冲的内容?让我把最全的东西奉献给你:
首先,神马叫“垂直同步”。
顾名思义,首先得有什么东西是“垂直”的,然后另外一样东西和这个垂直的什么东西同步,合起来,才叫垂直同步
那么什么东西是“垂直的”呢?

大家都知道,在远古时代的CRT显示器的显示原理是用电子扫描荧光屏来发光。参考上图,电子从A1开始,从左到右,从上到下,当扫描到D4位置的时候,屏幕上完整的一副图像就完成了。当电子扫描到D4的时候,显卡会发出一个叫Vertical synchronization的信号,告诉显示器,已经完成了一帧画面的扫描,要回到A1开始扫描下一帧了。这就是“垂直同步信号”
这个垂直同步信号,是由显卡发出给显示器的,一方面,告诉显示器,要回到A1位置啦,另外一方面,也通知显卡,准备输出下一帧画面
到了液晶显示器时代,没有电子这个东西了,但是垂直同步信号却依然需要,不然显卡就无法知道在什么时候才可以输出下一帧画面,显示器也无法知道什么时候可以开始处理一帧画面
很都搞不清楚,液晶显示器的刷新率,和响应时间的区别,往往将两者混为一谈。实际上,刷新率是指液晶显示能够在什么频率的垂直同步信号下工作,一般是固定60HZ,但液晶电视之类的显示器,能以24HZ、25HZ、30HZ、60HZ、120HZ……等许多刷新率工作。液晶显示器也有自己的IC芯片,它接受到的数字信号,也需要一定信号处理过程才能最终显示在屏幕上,所以,即便是液晶显示器也同样需要垂直同步信号来告诉他什么时候才完整的接收到了一帧画面。说白了,刷新率对于液晶显示器来说,也是绝对必要的。
而响应时间是指液晶像素发生转换时所需要的时间。比如说一个像素正显示红色,而下一帧画面要改成绿色,那么这个像素从红色变为绿色所需要的时间,就是响应时间。如果响应时间过长,就会造成颜色的不准确,在很短的一瞬间这个像素既不是红色也不是绿色,而是介于两色之间的过渡色,这就是“拖影”现象出现的原因。
好啦,我们搞清楚了什么是“垂直同步信号”以及它的作用,下吗就要问,是什么东西要和这个垂直信号去同步呢?
这要从显卡工作原理说起:

不要被上面复杂的图表吓唬住了,其实显卡工作流程很简单。首先,它接受CPU和内存传来的数据,然后经过BLABLA的处理,最后,生成一帧画面,然后重复之前的过程,生成下一帧画面,如此重复。一般科普,大概也就说到这里了。但实际上,一个关键性的东西,很少有人提及,就是右下角那个“帧缓冲器”。
帧缓冲器本质上就是显存中一组内存数据(缓冲区),用来存储一帧画面每个像素点的数据。显卡将缓冲区数据依次输出到显示器,当全部输出完毕之后,发出一个垂直同步信号,然后输出到显示器,再发出垂直同步信号,如此反复。实际上整个垂直同步,双重,三重缓冲概念,本质上就是“帧缓冲器数据输出规则”。
缓冲区的数据,是由显卡生成的。假设我们的显卡速度很快,每秒生产的帧数肯定要超过显示器刷新率。那么在实际数据处理过程中,缓冲区的数据,在被输出之前,就被显卡不断的刷新重写。但是缓冲区并不是“先清空再写入数据”,这太没有效率,而是采用“新数据覆盖老数据”的方式!
我们来假设,缓冲区已经有一副完整的帧画面(A帧),然后显卡生成了下一帧画面(B帧),新一帧的数据开始写入缓冲区,写到一半的时候,垂直同步信号来了,于是缓冲区的数据被输出到显示器。但问题是,这时缓冲区的数据,是由一半A帧和一半B帧数据合成的。因此最终显示器上显示出来的画面就不是一副完整的画面,这就是“画面撕裂”现象出现的原因!
好啦,我们现在需要解决“画面撕裂”问题,我们怎么解决呢?有聪明的同学说了,这还不简单,让帧缓冲区里的数据始终保持一副完整的画面不就可以了嘛。没错,这就是“垂直同步”的原理!
实际运作是这样的,当显卡生成了一副完整画面并写入了帧缓冲区之后,暂停!,开始等待垂直同步信号,当得到垂直同步信号后,再继续渲染下一帧写入缓冲区。这样“一个画面一个垂直同步信号,画面和信号同步起来”,就可以保证在缓冲区的数据始终是一副完整的画面,不会出现前后帧混合的问题!
但是,世界上哪里有那么容易的好事开启垂直同步会带来两个问题!
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-17868-1.html
全世界能单挑赢的船应该不超过10艘