




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章图形绘制管线(pipeline)对于一项复杂工程,使用管线结构比使用非管线结构可以得到更大的吞吐量。管线结构的整体速度是由管线中最慢的那个阶段决定的。图形绘制使用的管线称为图形绘制管线。从概念上,图形绘制管线可以粗略地分为3个阶段,即:应用程序阶段、几何阶段、光栅阶段。每个阶段又可以进一步划分为几个子阶段,为了对子阶段进行加速,又可以对子阶段进行并行化处理。应用程序几何光栅图形绘制管线7.1应用程序阶段应用程序阶段是通过软件实现的,开发者能够对该阶段进行完全的控制,可以通过改变实现方式来改进实际性能。这一阶段要完成诸如建模、碰撞检测、加速算法、动画、力反馈、人机交互,以及一些不在其它阶段执行的计算。在应用程序阶段末端,将需要绘制的几何体输入到绘制管线的下一阶段。这些几何体都是绘制图元(如点、线、三角形等),最终需要在输出设备上显示出来。这就是应用程序阶段最重要的任务。对于其它阶段,由于其全部或部分是建立在硬件基础之上,因此要改变实现过程是比较困难的。但应用程序阶段可以改变几何和光栅阶段所消耗的时间,例如可以设法减少传递给几何阶段的三角片数量。由于应用程序阶段是基于软件方式实现的,因此不能像几何和光栅阶段那样分成若干个子阶段。但是为了提高性能,可以使用并行处理器进行加速。7.2几何阶段几何阶段主要负责大部分多边形和顶点操作,执行的是计算量非常高的任务,可以将这个阶段进一步划分为几个功能阶段。
模型和视点变换光照和着色投影裁减屏幕映射齐次坐标:
齐次坐标(HomogeneousCoordinate)是比普通坐标高一维的坐标,与普通坐标可以相互转换:从普通坐标转换为齐次坐标:(x,y,z)→(x,y,z,1)从齐次坐标转换为普通坐标:
(x,y,z,w)→(x/w,y/w,z/w)引入齐次坐标后带来了诸多便利,主要有:可以区分坐标和方向:(x,y,z,1):坐标(x,y,z,0):方向规范化的坐标变换:OpenGL中的所有变换都可以用4×4矩阵乘法表示,例如:平移和透视投影。这是普通坐标所做不到的。7.2.1几个坐标系和齐次坐标7.2.2模型与视点变换在图形显示过程中,模型通常需要变换到若干不同的空间(坐标系统)中。(1)模型变换每个模型可以和一个模型变换相联系,这样就可以对它进行定位和定向。同一个模型还可以和几种不同的模型变换联系在一起。就是同一个模型有多个副本,在场景中具有不同的位置、方向和大小,而不需要对基本几何体进行复制。起初,模型处于自身所在的模型空间中,可以认为它根本没有进行任何变换。模型变换的对象是模型的顶点和法线。所有模型经过模型变换从自己的模型坐标系变换到公共的世界坐标系中。实际的绘制只对相机(或视点)可以看到的模型进行。为了便于投影和裁减,需要将原来在世界坐标系中表示的物体变换到相机坐标系中,这是通过视点变换来实现的。(2)视点变换(3)变换的实现方式所有的模型变换和视点变换都用4×4的矩阵来实现。处于效率方面的考虑,可以在进行模型变换之前,将所有的变换矩阵(包括视点和模型变换)级联起来,彼此相乘,形成单一矩阵。在这种情况下,模型直接变换到了相机坐标系(或视点坐标系)。(4)常用变换绕x轴旋转θ角绕y轴旋转θ角绕z轴旋转θ角②平移:①旋转:平移量为Δx,Δy,Δz(4)常用变换③放大:④剪切:x、y、z三个方向分别放大Sx、Sy、Sz倍θABCD沿x轴方向的剪切变换,剪切程度为s=tgθ7.2.3光照和着色几何模型可以有与其每个顶点相关联的颜色(或材质)和覆盖其上的纹理。单独使用光照或纹理(特别是纹理)可以在物体表面产生不错三维效果;但如果单纯使用顶点颜色,效果会很差。左图只有纹理右图使用纹理加光源续前页对于受光照影响的模型来说,可以用光照方程来计算模型上每个顶点的颜色,这个颜色近似模拟了光线与表面之间的实际作用。物体表面每个顶点的颜色由光源位置及性质、顶点位置和法线、顶点所在的材料性质来计算。模型在图形上通常用三角形表示,有了顶点的颜色就可以通过插值绘制出颜色渐变的三角形。通常,光照计算是在世界坐标系中进行的,光源也在世界坐标系中表示。但是,如果对光源及参与光照计算的所有实体都进行了视点变换,在相机坐标系中会得到同样的关照效果,因为这时光源与模型之间的相对位置仍然保持不变。注意相机位置与光照计算无关。OpenGL的光照计算在视点坐标系中进行。7.2.4投影目的:是将三维空间中的物体显示到二维平面。有两种投影方式:平行投影(正投影)和透视投影。左边为正(或平行)投影,右边为透视投影视景体:即可见空间范围。只有在视景体中的物体才可能出现在屏幕上。平行投影:平行投影的视景体是一个长方体盒。其变换矩阵为:7.2.4投影透视投影:透视投影的视景体是一个四棱台,即一个以矩形为底面的被截金字塔。棱台的小顶面靠近视点,棱台的大底面远离视点。其变换矩阵为:7.2.4投影OpenGL中的投影:OpenGL并没有直接将物体从三维投影到二维。不管是平行投影还是透视投影,OpenGL利用投影变换矩阵将其对应的视景体变换为一个规范的立方体(x∈[-1,1],y∈[-1,1],z∈[-1,1]),这个立方体是左手系,极大地简化了后期的裁剪和消隐。对平行投影来说,由于是将长方体变换为规范立方体,所以平行投影的特点是:几何体投影的大小不受与视点距离的影响,同样大小的物体其投影大小也相同,因此可以用来制作建筑蓝图。对透视投影来说,由于是将前小后大的四棱台变换为规范立方体,所以透视投影的特点是:近处的物体被放大、远处的物体被变小,得到逼真的视觉效果。7.2.4投影7.2.5裁减当一个图元完全位于一个视体内部的时候,那么它可以直接进入下一个阶段;当一个图元完全位于视体之外时,不需要绘制,不用进入下一个阶段。但需要对哪些部分位于视体之内的图元进行裁减处理,被裁减图元将包含新的顶点。投影变换之后的图元只需要针对规范立方体进行裁减,这使裁减算法大大简化。有些系统还允许用户在此基础之上,自定义数个裁减平面。只有通过裁减阶段的图元,才能进入屏幕映射阶段。在这个阶段,通过简单的平移和缩放,图元顶点的坐标由规范化坐标系(x∈[-1,1],y∈[-1,1],z∈[-1,1])变换到窗口坐标系(x∈[0,winx-1],y∈[0,winy-1],z∈[0,1]),至此完成整个流水线的几何阶段。准备进入下一个大阶段:光栅阶段。7.2.6屏幕映射几何阶段传给光栅阶段的数据仍然是几何图形(只不过有了颜色或纹理坐标等属性),光栅阶段的任务就是要利用这些图元数据为每个象素(pixel-屏幕上的点)决定正确的配色,以便正确地绘制整个图像。这个过程称为光栅化或者扫描转换。对高性能图形系统来说,光栅化阶段必须在硬件中完成。光栅化的结果是将视景体内的几何场景转化为图像。7.3光栅阶段7.3.1图形的光栅化光栅化结果保存在颜色和深度位面中(通过检测时):颜色用于显示图形,深度值用于消隐。
以四边形的光栅化为例:在XY平面上,通过从多边形最低点到最高点之间的水平扫描,完成对多边形的扫描转换。对每条扫描线,多边形的扫描转换分为四个步骤:求交、排序、配对、着色。XY位面:屏幕空间对应着同样大小一组位面,位面的数目决定了每个象素的变化能力。其中最基本的是颜色位面和深度位面。缓冲区:常称一组位面为缓冲区(buffer)。帧缓冲区(framebuffer)通常指系统包含的所有位面,它又细分为各种不同功能的缓冲区。颜色缓冲区示意图7.3.2位面7.3.3颜色位面颜色位面就是屏幕的显示内容。为了避免观察者看到光栅化过程,图形系统一般都使用了双缓冲机制:即提供两组颜色位面,分别称为前缓冲和后缓冲。前缓冲处于显示状态,即屏幕看到的内容;后缓冲用于在非显示状态下进行光栅化。一旦后缓冲绘制完毕,则切换前后缓冲。7.3.4深度位面深度位面又称为Z缓冲器,它为每个象素存贮着一个z值,这个z值是从相机到最近图元之间的距离。当将一个图元绘制为相应的象素时,需要计算象素位置处图元的z值并与同一象素Z缓冲器内容进行比较。如果新得到的z值远远小于Z缓冲器中的z值,那么说明即将绘制的图元与相机的距离比原来距离相机较近的图元还要近。这样,象素的z值和颜色就由当前图元对应的z值和颜色进行更新。如果计算出来的z值远远大于Z缓冲器中的z值,那么颜色缓冲器和Z缓冲器就不变。Z缓冲器算法非常简单,图元的绘制顺序可以是任意的,所以被大量使用。但这种算法不支持对半透明物体的绘制。对半透明物体的绘制顺序是:首先使用Z缓冲器对所有非透明物体进行绘制,然后在使用z值比较但禁止写入Z缓冲器的情况下,使用画家算法按从后向前顺序对半透明物体进行合成绘制。7.3.5其它位面除去颜色缓冲和深度缓冲外,还可以使用一些其它的缓冲器来产生一些图像的不同组合,例如:alpha缓冲器可以为每个象素存储一个的不透明度值;模板缓冲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论