浅谈画面撕裂

什么是帧?

timg

这个玩具想必各位小的时候都玩过,就是画很多具有微小变化的单张画,然后按照顺序连续翻页,就会达到一种“动画”的感觉。

我们的显示器也是这样的,你看显示器上是“动画”,就和上面那个简易玩具一样,显示器也是靠连续播放无数张静态画面来达到一个视觉上的错觉,通过人眼的视觉暂留,让你的眼睛误以为这是动画。

显示器都有一个自己的刷新频率,60Hz的显示器一秒钟就是刷新60张画面,144Hz显示器就是一秒钟刷新144张画面。这当中,每一张画面我们都称之为一帧。

显示器的刷新率是固定的,比如60Hz显示器那么他就是固定每隔1/60秒刷新一帧。

显卡的作用

显示器只是一个显示设备,他并不知道自己要显示什么,所以必须有东西来告诉他你要显示什么画面,这个东西就是显卡,显卡的作用就是渲染“帧”,然后把帧发给显示器,显示器收到帧之后,开始往显示器上显示。

逐行扫描

显示器刷新一帧的时候并不是一次性把整个画面全部刷新出来,他是从上到下一行一行逐渐把图片渲染出来的,具体的是什么情况,一张gif就能很好的说明了。除了逐行扫描外还有隔行扫描,至于区别就是一个是一行一行画,一个是隔着一行画。目前大多数显示器采用的都是逐行扫描。老设备带宽不足只能隔行扫描,现在的新设备基本都是逐行扫描了。

v2-29f53207a38e2a067b224cdf47c6b428_b

也就是说60HZ的显示器并不是说屏幕一秒闪60次画面,而是60HZ的显示器一秒可以逐行扫描60次,你看到的帧是一行一行画出来的,而不是一张一张闪的。

画面撕裂

那么这里就有一个很有趣的情况,因为逐行扫描需要时间这个时间是固定的,但是GPU刷新的时间不是固定的,那么GPU很有可能会抢跑,也就是渲染速度超过显示器。

也就是说,当GPU渲染完了上一帧的数据后,这个时候,显示器还没有完成一次完整的信号扫描,这个时候,GPU又在同一个缓冲区渲染了新的数据,导致老的数据被覆盖,但我们的显示器扫描到的时候,就会把新的数据显示出来。

这就是画面撕裂现象,具体的效果看图你们就知道了

image-20200707093238867

帧生成时间

举个例子,以下帧数单指显卡输出帧,而不是显示器的刷新率

第一组:第一帧与第二帧间隔了0.3秒,第二帧与第三针间隔了0.1秒,第三针与第四帧间隔了0.2秒,第四帧与第五帧间隔了0.4秒。

第二组:每一帧都间隔0.25秒

那么这里帧与帧之间的间隔就被我们称之为帧生成时间。

那么你从面板上看,两者都是5 fps,都是一秒5帧,但是由于前者的帧数不平滑,导致实际上流畅度也不如后者。就是因为帧生成时间不平滑。

解决画面撕裂的方案

双缓冲区+垂直同步

那么为了避免显卡“抢跑”这种事情发生,这时候就有一项技术,叫垂直同步,垂直同步的作用就是将GPU的渲染速度和显示器的扫描信号强制进行同步,也就相当于在帧缓存区加了一把锁,如果这个帧缓存区的数据没有渲染完成,那么就不让显示器,来读取其中的数据,还继续显示上一次的数据,知道这个帧缓存区中的数被渲染完毕之后解锁,显示器才能拿到这个帧缓存区中的数据去进行显示。

这样一方面可以解决画面撕裂现象,因此不会出现缓冲还没画完被覆写的情况了。

掉帧问题

由于开启了垂直同步,当我们的GPU渲染的时间太长的时候,这个时候显示器无法拿到新的渲染数据,那么就会继续显示上一个帧缓存区的数据,这个时候我们看到的还是上一次的画面,新的数据只能等到下一次扫描的的时候在显示了。

image-20200707094940232

掉帧并不等于帧率丢失,而是重复显示同一帧画面。

三重缓冲

顾名思义,就是在GPU中开启三个缓冲区,三个缓冲区,依次交替的进行渲染,极大的降低掉帧的情况,但是也并不能完全解决。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355