仔细查了一下这个问题的产生和解决的方法,做一个回复总结,方便下次碰到解决
“垂直同步”所解决的问题是画面撕裂,而垂直同步会导致“操作延迟”的副作用,“三重缓冲”是为了解决“垂直同步”所引起的操作延迟的操作。
1、垂直同步解决画面撕裂的原理:
开启垂直同步,就相当于在帧缓冲区里架设了红绿灯。当显示器尚未完成一帧画面的刷新时,红灯亮起,两个缓冲区不允许交换;当显示器刷新完一帧画面时,绿灯亮起,此时缓冲区可以进行交换了。这样以后就杜绝了“在进行数据传输的过程中交换缓冲区“的可能,自然也就解决了画面撕裂的问题。
2、三重缓冲解决操作延迟的原理:
三重缓冲在双重缓冲的基础上再加入了一个帧缓冲区,组成了一个前缓冲区,两个后缓冲区的规格。程序来回向两个后缓冲区写入图像,每次显示器刷新时,前缓冲区就和最近完成写入的那个后缓冲区交换。可以看到,即便有一个缓冲区要受到红绿灯的管控,另外两个缓冲区还是可以来回写入图像,于是就不需要人为增加画面延迟了。