什么是管线?管线,它用于描述一种过程,该过程可能涉及两个或者多个独特的阶段。这是摘自《OpenGL超级宝典》中的说法。
在《实时计算机图形学》一书中,将图形绘制管线分为三个主要阶段:应用程序阶段,几何阶段,光栅阶段。
应用程序阶段:使用高级编程语言(如C、C++、Java)等进行程序开发,主要和CPU、内存打交道。在该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理)等数据通过数据总线传送到图形硬件。在该过程检查其他输入信息源(键盘、鼠标、摇杆等)。
几何阶段:主要负责顶点坐标变换、光照计算、可视体裁剪、投影及屏幕映射。该阶段基于GPU进行计算。在该阶段的末端得到了经过变换和投影之后的顶点坐标、颜色、以及纹理坐标。
光栅阶段:基于几何阶段提供的数据,为像素正确配色。该阶段进行的都是单个像素的操作。
重点记录几何阶段中顶点坐标变换的过程。
起初,模型处于自身所在的模型坐标空间中,然后由此变换到世界坐标空间中(注意,世界坐标空间是唯一且固定不变的)。再由世界坐标空间变换到观察者坐标空间中(摄像机坐标空间)。之后,需要进行投影变换的操作。
投影变换的目的是将可视体变换为一个单位立方体。该单位立方体的对角顶点分别是(-1,-1,-1)和(1, 1, 1)。单位立方体又称为规范立方体(CVV)。根据投影类型的不同,正投影是将矩形盒子的可视体变换到单位立方体,而透视投影则更为复