图形显示的必要技术
最近想通过写一个渲染器来学习计算机图形显示需要的流程步骤,在看一些渲染器源码的过程中,发现里面只包含了几何的计算、必要的抽象结构体、三角形绘制等,但怎么没看到与Display有交互的地方呢?最终不还是要将计算好的数据传给Display,之后查了相关资料,其中包括操作系统层面的Driver、句柄HDC、Display控制器(硬件原理上的必要技术)、Display处理器等等,在这里先献祭上一张Graphic Display Processor与Monitor的通信图GPU前身GDP
由于我们的出发点是这样一个问题,CPU计算完图形数据,是如何传递给Display的,我们刚提到的控制器,在这张图中就是Display Controller(下称显示控制器),它负责与外界硬件如显示器Display Console、CPU通信,通信的技术中最重要的就是中断机制(Signal的收发等等),显示控制器发送的Signal通过电线cable到达Display Console,让其能够做出相应的行为。图中的Display Generator用于生成数字或字母。Display file Memory是一些图像信息(二进制格式),在最后一部分通过Video Controller进行数模信号转换。如下图所示:
那么显示处理器是如何从System Bus拿取图像信息的呢?如何获取CPU计算好的图像数据呢?我们知道我们如今面对的基本上都是操作系统,不是直接跟硬件打交道,所以这里问题的回答需要涉及到操作系统,操作系统有个文件系统的概念,图像都是二进制格式的文件,不同于那些能够供人阅读的文本格式,文件概念里有个header的概念,CPU计算完成的图像信息存在进程里,进程通过Windows的API调用,将图像信息输送给显示控制器。粗略上是这么理解,实际还涉及到很多概念,基本跟存储管理(内存+硬盘)有关,存储管理的内容本篇不继续深入,想了解的可以查阅《计算机图形学》、《深入理解操作系统》等底层原理书籍。
最后再献祭一张离我们更近的GPU内部结构图
页:
[1]