图像撕裂
图像撕裂就像图中所示,同一副画面显示的内容无法上下对齐
屏幕撕裂屏幕的更新频率是固定的,通常是60Hz。显卡效能大幅提高,输出的帧率可以非常高,如果显卡的输出高于60fps,两者不同步,画面便会撕裂。
垂直同步
屏幕扫描垂直同步的引入是为了防止图像撕裂,在屏幕扫描的过程中加了个锁,不会在扫描完成前提前获取到图像,防止了撕裂的出现。
双缓存区
GPU开辟了两个帧缓冲区
双缓存区当A帧缓冲区拿到数据后,A上锁,屏幕控制器从A获取数据并扫描完成,A解锁。然后屏幕控制器指向B帧缓冲区,B上锁,获取并扫描完成B,这时A拿到GPU的新数据,B解锁。屏幕控制器再指向A,重复操作。
垂直同步和双缓存区的作用都是为了结局撕裂的问题,但是同时衍生出了一个新的问题,掉帧
掉帧
掉帧A帧显示后,B帧进入双缓冲区处理,但是到第二帧时,理应显示B帧,但是由于处理速度的问题,B还未处理完成,因而还是显示的A帧数据,即是掉帧。
三级缓存
为了减少掉帧,引入了三级缓存,为了充分利用CPU/GPU的空余时间,开辟3个帧缓冲区,A显示屏幕,B渲染好,C再从GPU拿取渲染数据,当屏幕缓冲区和帧缓冲区都处理好了,屏幕控制器再指向另一个帧缓冲区,减少掉帧次数。
这只是尽可能的减少掉帧,而不是完全解决,三级缓存一样可能出现掉帧
网友评论