美文网首页
撕裂/掉帧

撕裂/掉帧

作者: 番茄炒西红柿啊 | 来源:发表于2020-07-06 14:30 被阅读0次

图像显示大致过程:

CPU/GPU处理存放到帧缓存区视频控制器去帧缓存区中读取其他一些列的处理显示器展示(光栅扫描: 从左上顶点开始从左往右逐行扫描展示, 直至右下顶点)

  • 注: 从左上顶点开始从左往右逐行扫描展示, 直至右下顶点. 这个步骤和内容大小无关, 哪怕仅仅展示的只是一个小点. 也是执行该操作.所以屏幕一次渲染的时间是固定的(左上顶点 -> 右下顶点), 和内容多少大小无关.

撕裂:

撕裂指当前屏幕展示的内容不是同一帧的画面.所以不是一个完整的画面.如图:


撕裂

产生此问题的原因: 当一次扫描完成,执行下一次扫描时.CPU/GPU对下一帧需要渲染数据还没有处理完毕.所以此时扫描到的位置展示的还是上一帧的画面.当扫描还未结束,此时下一帧的数据处理完成更新了帧缓存区的数据.那么后面扫描的位置展示出来的就是新的画面.因此便产生了撕裂的现象.

垂直同步:

为了解决上述的撕裂问题,于是有了垂直同步的方案

垂直同步: 光栅扫描每从左上顶点到右下顶点完成一次扫描.就发一次垂直同步信号. 只有收到垂直同步信号时,才可以读取下一帧的数据.这样就能保证一次扫描开始到结束的过程中读取的都是同一帧的数据. 保证了图像的完整性, 避免了撕裂问题的产生.

掉帧:

垂直同步很好的解决了撕裂的问题,但是却产生了新的问题,那就是掉帧. 也就是我们常说的卡顿现象.

产生原因: 当收到垂直同步信号后, 但是此时下一帧的数据还没有处理准备好. 因此会继续展示上一帧的画面. 这样就造成了屏幕的画面一直没有变.过了好久下一帧的数据才来.这样就给人卡顿的感觉.

喜欢玩单机游戏喜欢看攻略的人肯定看过一些视频在教低配电脑玩家解决游戏卡顿的方法之一就是关掉垂直同步这个选项.

双缓存/三缓存

为了解决掉帧的问题. 于是有了多缓存的方案. 双缓存的机制就是: AB两缓存区, 显示器展示A时, 下一帧处理好的存储在B中. 显示器展示B时,再下一帧存储在A中. 如此轮换交替. 三缓存便是做了进一步优化.

但是多缓存机制并不是说能完全解决掉帧的问题. 只是能减少掉帧发生概率.渲染数据过于复杂,CPU/GPU性能不行.给再多的缓存也没用.

相关文章

  • 撕裂/掉帧

    图像显示大致过程: CPU/GPU处理 → 存放到帧缓存区 → 视频控制器去帧缓存区中读取 → 其他一些列的处理 ...

  • 图像撕裂、掉帧

    1 图像撕裂 图像撕裂就是一张图片显示的时候,出现了上下断层,如下图: 1.1 出现撕裂的原因 首先我们来看图像显...

  • 课程一 OpenGl 名词解释

    问题1:在你的app界面上加载一个普通的UIImageView会出现撕裂或掉帧吗。 问题2:掉帧是怎么产生的 问题...

  • OpenGL掉帧与撕裂原理

    在了解掉帧与撕裂之前我们需要了解一下CPU与GPU的分工 根据上图可以了解到,CPU主要是发出指令,指挥者角色,G...

  • iOS-图片撕裂、掉帧初解读

    敲黑板,划重点!!! 图片撕裂:两帧或多帧图片在屏幕上显示,导致显示效果错位,效果图如下: 掉帧:指的是重复显示同...

  • 视频撕裂及掉帧的原因

    显卡 显卡(英语:Video card、Display card、Graphics card、Video adap...

  • 屏幕撕裂掉帧以及解决办法

    掉帧、二级缓存三级缓存 撕裂的原因 撕裂(ScreenTearing)是指显示器把两个或更多的影格(frame)显...

  • iOS图像撕裂和掉帧问题分析

    1. 什么是图像撕裂 图像撕裂是我们所观看到的一张图片发生上下错位,出现了明显的断层,如下图: GPU进行渲染到显...

  • 屏幕卡顿 及 iOS中OpenGL渲染架构分析

    屏幕卡顿 屏幕卡顿是指图形图像的在显示时出现了撕裂(即图片错位显示)、掉帧(重复显示同一帧数据)等问题,导致用户能...

  • 图像撕裂、掉帧及三级缓存

    图像撕裂 图像撕裂就像图中所示,同一副画面显示的内容无法上下对齐 屏幕的更新频率是固定的,通常是60Hz。显卡效能...

网友评论

      本文标题:撕裂/掉帧

      本文链接:https://www.haomeiwen.com/subject/xiiwqktx.html