美文网首页
OpenGL:图形扫描以及浅谈屏幕撕裂

OpenGL:图形扫描以及浅谈屏幕撕裂

作者: 我是卖报的小行家 | 来源:发表于2020-07-06 09:41 被阅读0次

一.首先得知道CPU和GPU
CPU:(Central Processing Unit):现代计算机整个系统的运算核心,控制核心。
GPU:(Graphics Processing Unit):可进行绘图运算工作的专用微处理器,是连接计算机和显示终端的纽带。

CPU 内部组成

截屏2020-07-05 上午8.53.02.png

GPU内部组成


截屏2020-07-05 上午8.43.45.png

图形扫描显示:
1.随机扫描显示

显示文件 ---->显示处理器 ---->CRT([阴极射线管](Cathode Ray Tube)

随机扫描显示

![ 截屏2020-07-05 上午8.49.23.png

](https://img.haomeiwen.com/i17524917/085db3f90d89b4de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2.光栅扫描显示系统的组成

截屏2020-07-05 上午8.50.03.png

屏幕扫描


截屏2020-07-05 上午8.50.26.png

3.光栅扫描显示系统组成

截屏2020-07-05 上午11.15.20.png

4.简单光栅扫描显示系统结构

截屏2020-07-05 上午11.17.48.png

5.常用光栅扫描

截屏2020-07-05 上午11.22.12.png

6.高级光栅扫描显示系统结构

截屏2020-07-05 上午11.27.02.png

二. 屏幕撕裂
屏幕撕裂是我们肉眼看到的一张图片上下发生错位,即断层 如下图


截屏2020-07-05 上午11.32.26.png

产生原因:当得到图像后,GPU进⾏渲染--->帧缓存区⾥ --->视频控制器--->读取帧缓存区信息(位图) ---> 数模转化(数字信号处---->模 拟型号) ---->(逐⾏扫描)显示。当第一帧图像扫描到某个位置时,GPU拿到新的数据并存到帧缓冲区,这个时候视频控制器从帧缓冲区扫描的是新拿到的帧的图像。因为我们看到的一张图片其本质是两张图片组合而来,由于视频控制器显示速度小于了GPU处理图形的速度,所以就形成了在我们肉眼看到的断层现象。

如何去解决:
垂直同步Vsync + 双缓存区 DoubleBuffering
详解:
垂直同步Vsync:帧缓存区加锁 防⽌出现撕裂情况。
双缓存区 DoubleBuffering:GPU开辟AB两个帧缓冲区。

当A帧缓冲区拿到第一帧数据,给A缓冲区加上一把锁,屏幕控制器从A诊缓冲区拿到数据并逐行扫描完成,A帧缓冲区解锁,并且屏幕控制器指向B帧缓冲区,B帧缓冲区加锁并逐行扫描显示,在屏幕控制器扫描B帧缓冲区的时候,A帧缓冲区拿到GPU传过来的新一帧数据,这样以此类推可以解决撕裂问题。

相关文章

网友评论

      本文标题:OpenGL:图形扫描以及浅谈屏幕撕裂

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