365玩球平台-365bet规则-365体育网站忽然打不开了

图像撕裂的原因及解决方法

图像撕裂的原因及解决方法

图像撕裂的原因及解决方法1、什么是图像撕裂?

图像撕裂是指我们肉眼看见一张图片上下两层发生了错位,如下图所示:

image.png

2、为什么会发生图像撕裂?

GPU在渲染图片的时候,视频控制器是从帧缓冲区里面取数据,然后经过数模转换,最后将图片展现在显示上。正常情况是没有问题的,特殊情况是当GPU还没有将图片展现完成时,帧缓冲区数据已经更新为下一帧的数据,此时视频控制器只负责取出数据,它并不知道该数据已经被更新了,因此继续执行取数据,数模转化,展示图片的操作,此时,显示器上的图片就会表现为撕裂。

3、有什么办法可以解决图像撕裂?

苹果引入了:垂直同步Vsync + 双缓冲区DoubleBuffering的解决办法。

垂直同步Vsync:对帧缓冲区增加一个加锁的操作,不允许视频控制器在从缓冲区读取数据的过程中对帧缓冲区的数据进行修改。

双缓冲区DoubleBuffering:由于对帧缓冲区加锁了,如果只有一个帧缓冲区效率太低,因为每次都必须得上个缓冲区的数据被读取完成才对下一帧的数据进行处理。因此,可以采用双帧缓冲区来解决效率低的问题,视频控制器可以读取A缓冲区的数据,而处理数据可以在B缓冲区执行,当A缓冲区的数据被显示完成,视频控制器切换从B缓冲区中读取,而A缓冲区处理数据。

4、双缓冲区有什么弊端?

引入双缓冲区机制后,会有一个新的弊端,即:掉帧。

掉帧是指在屏幕上显示的是上一帧的数据,肉眼看到像是图像卡住了一样。

image.png

上图展示了掉帧形成的原因:每帧画面处理的时间约为16.7ms,上图第1个16.7ms内,CPU和GPU对数据处理完成,图像正常显示。在第2个16.7ms内,由于CPU和GPU处理数据的时间较长,导致16.7ms内视频控制器并没有将帧缓冲区的数据处理完成,当第3个16.7ms时,视频控制器处理的仍然是上一个帧缓冲区的数据,并没有进行缓冲区切换,此时出就现了掉帧的情况。

5、掉帧的情况是否可以避免?

目前,掉帧的情况不可以避免,只能对掉帧的情况进行优化,减少掉帧。可以引入三缓冲区的方案,但是即使引入了三缓冲区,也无法完全避免掉帧。

©著作权归作者所有,转载或内容合作请联系作者平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关推荐
《贪玩蓝月》攻略:深度解析与进阶技巧大揭秘
365体育网站忽然打不开了

《贪玩蓝月》攻略:深度解析与进阶技巧大揭秘

📅 07-13 🔥 797
中国的盆地
365bet规则

中国的盆地

📅 08-03 🔥 902
永加一笔会变成什么 永可以加什么偏旁?
365玩球平台

永加一笔会变成什么 永可以加什么偏旁?

📅 07-17 🔥 957
炘怡名字含义:
365体育网站忽然打不开了

炘怡名字含义:

📅 08-05 🔥 769
嘍的读音:lóu
365玩球平台

嘍的读音:lóu

📅 08-16 🔥 51
手机俄语翻译软件排行榜TOP10推荐
365bet规则

手机俄语翻译软件排行榜TOP10推荐

📅 08-07 🔥 344