
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习java编程开发等互联网技术,而本文我们就通过案例分析来了解一下,显示器图像渲染原理分析。
CPU,GPU,显示器协调工作模式
CPU通过视图创建,布局计算,文本渲染生成图像3D数据模型传给GPU。GPU将这些3D图像模型数据转成屏幕2D图像模型,然后经过GPU渲染流程生成位图放入帧缓冲区。视频控制器读取帧缓冲区的数据,通过数模转换显示到屏幕上。
双缓存机制
在屏幕图像显示机制中简单的是使用一个帧缓冲区,但会有性能问题,显示器读完一帧位图后,GPU才能渲染下一帧位图数据往帧缓冲区里放。这里引入双缓冲区机制,GPU先往一缓冲区中写入一帧位图,等显示器读完一个缓冲区数据时,GPU开始渲染下一帧数据往二缓冲区写入,等一帧图像渲染完成,视频控制器会直接交互指针,将指针指向二缓冲区,然后重复这一个过程。
图像撕裂问题
引入了双缓存区后,图像显示效率提升了,但是又带来了一个新问题:图像撕裂。
当视频控制器读取到一个帧缓冲区数据一半时,此时GPU写入二帧缓冲区位图数据结束,并进行了缓冲区指针交互。此时屏幕的下半部分就显示的二帧的图片,造成了图像上下部分不一致。为了解决这个问题,采用了时钟垂直信号机制,当视频控制器完成一帧扫描后回到初始位置,此时要等待VSync垂直信号,只有收到VSyn信号后,才会进行帧缓冲区指针的交互,然后开始显示下一帧数据同时GPU开始渲染后面一帧的位图数据。
CPU与GPU
CPU(CentralProcessingUnit)中央处理器:是计算机系统的控制单元和计算单元,可用于处理复杂的逻辑,拥有一定的并行计算能力。
GPU(GraphicsProcessingUnit)图像处理器:是用于绘图计算的图像处理器,能够生成2D/3D图像和视频,有非常强大的并行计算能力。
为什么要使用GPU作为图像的专门处理器呢,因为一个屏幕上的像素点是非常多的,在规定的时间内1/60s计算每一个像素点的样式是对并行计算的要求非常高,所以需要并行计算能力强的GPU来专门处理图像的计算工作。
GPU的内部层级结构。底层是计算机的系统内存,其次是GPU的内部存储,然后依次是二级缓存L2,一级缓存L1。
GPU编程
OpenGL与DirectX都一套可以对GPU进行调用的API。
GPU及其相关驱动实现了图形处理中的OpenGL和DirectX模型,所以开发者可以通过调用这些API直接操作硬件。
OpenGL严格来说并不是常规意义上的API,而是一个三方标准,它定义了每个函数该如何执行,以及它们的输出值。它的内部具体实现则是由OpenGL库的开发者自行决定。通常OpenGL库的开发者通常是显卡的生产商。
DirectX则是由Microsoft提供一套三方标准。
名称解释
渲染:将代码中的图像模型(光照,纹理等信息)转化成图像的过程。
绘制:用工具,画笔画图的过程。
纹理:物体表面材质的凸凹波纹和颜色。
图片解码与编码:将本地图片(png,jpg)文件读取到内存,生成对接图像对象叫解码;反过程保存到本地叫编码。
图元:计算机中表现图像的基本元素,点(一个Vertex),线(二个Vertex),面(三个Vertex)。屏幕上展示的各种2D,3D图像都是用这三种基本元素表示的。
Vsync垂直信号:电子枪从帧缓冲区将位图取出逐个扫描到显示器结束后,屏幕控制芯片DAC会发出一个Vsync垂直时钟信号,此时会触发2件事,1.系统会从当前帧缓冲区读取新的图像属性扫描显示到屏幕上,2.CPU+GPU会开始绘制下一帧图像数据绘制。
位图:GPU渲染完成后的产物,里面的每个单位颜色对应的是屏幕上的一个像素点。
位图中的像素有深度的概念,比如一个位图有m*n个像素,每个像素可以用1,2,4,8位字节进行表示,使用的字节数越多能表示的颜色值(如RGB)就越多,图像就越逼真。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。