DirectX游戏编程第3章.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DirectX游戏编程第3章

第3章 渲染管道 本章的主题是渲染管道。渲染管道主要用于创建一个二维图像,该二维图像是通过在指定位置设置的虚拟摄像机可以观察到的三维世界中物体的影像。 主要目标: 学习怎样在Direct3D中描述三维物体。 学习怎样设置虚拟摄像机。 理解渲染管道——利用几何方法描述三维场景的步骤以及怎样获得用于描述三维场景的二维图像。 3.1 描述的模型 一个场景是由物体或者模型所组成的。物体可以通过三角形网格进行近似的描述,如图3.2所示。 网格中的三角形是物体的基本组成部分。 一个多边形的两条边的相交点是多边形的顶点,可以通过指定三角形的三个顶点来描述三角形(见图3.3)。描述一个物体的时候,只需要指定构成物体的那些三角形。 3.1.1 顶点格式 在Direct3D中,顶点可以拥有颜色属性以及法线向量属性 创建一个自定义的顶点格式,首先需要创建一个顶点数据结构,用于保存顶点数据。 例如,下面这段代码中定义了两种不同的顶点格式,一种顶点格式保存了位置和颜色信息,另一种顶点格式保存位置、法向量以及纹理坐标信息: 参见教材P59 3.1.1 顶点格式 定义完顶点结构后,需要使用灵活顶点格式(FVF)标志来描述顶点的组成格式。例如对于前面定义的顶点结构可以通过如下的灵活顶点格式进行描述。 (1) 要描述包含位置属性和散射颜色属性的顶点结构时,灵活顶点格式标志为: #define FVF_COLOR (D3DFVF_XYZ | D3DFVF_DIFFUSE) (2) 描述包含位置属性、法向量属性以及纹理坐标属性的顶点结构时,灵活顶点格式标志为: #define FVF_NORMAL_TEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1) 3.1.2 三角形 三角形是构成三维模型的基本元素。通过创建三角形的列表来描述物体的形状和轮廓来构建一个物体。 三角形列表中包含了每个需要渲染的三角形的数据。 例如,如果需要构建一个矩形,可以将矩形分成两个三角形,并且指定所有三角形的顶点(见图3.4): Vertex rect[6] = {v0, v1, v2, // 三角形0 v0, v2, v3}; // 三角形1 3.1.3 索引 通常组成三维物体的三角形都会使用许多相同的顶点,如图3.4中的矩形所示。 如在图3.5中,该立方体有8个独立顶点,但是其中有许多顶点将在构建立方体的不同三角形中被重复使用。 3.1.3 索引 索引的工作原理是:在创建一个顶点列表的同时创建一个索引列表。顶点列表中存储了所有独立顶点的数据,索引列表中存储所有三角形的顶点对应独立顶点数据在顶点列表中的索引。 在索引列表中通过不同的索引来定义顶点如何组合以组成三角形: WORD indexList[6] = {0, 1, 2, // 三角形0 0, 2, 3}; // 三角形1 3.2 虚拟摄像机 图3.6展示了空间中的摄像机以及摄像机的拍摄范围。 摄像机可见的体积范围是一个平截台体,由视角范围、近平面和远平面来决定。 投影窗口是个二维的区域,平截台体内的三维几何体都将投影到这个二维窗口上,从而生成一个代表三维世界的二维图像。投影窗口被定义在最小值为(-1,-1)到最大值(1,1)范围之间,这一点是非常重要的。 3.3 渲 染 管 道 图3.7提供了对渲染管道的简单描述 渲染管道中的很多步骤中,都要将几何物体从一个坐标系中变换到另一个坐标系中去。这些变换都通过矩阵来完成。 例如,在图3.7中,如果需要设置一个从本地空间向世界空间的变换,可以进行如下设置: Device-SetTransform(D3DTS_WORLD, worldMatrix); 3.3.1 本地空间 本地空间(或者称为模型空间)指定义组成物体的三角形列表时所使用的坐标系统。本地空间在简化模型处理工作上是相当有用的。 在模型的本地空间中创建模型比在世界空间中创建模型要简单些。 比如,本地空间中创建物体时,不需要考虑物体的位置、大小以及与世界空间中其他物体的关系。 3.3.2 世界空间 将本地空间的物体变换到世界空间需要进行的一系列变换,这被称为世界变换,这些变换包括平移操作、旋转操作以及缩放操作,分别用于设置模型在世界坐标系中的位置、方向以及大小。 世界变换完成世界空间中所有物体位置,包括大小、方向,以及相互之间关系的设置。 世界变换用矩阵来表示,在Direct3D中用IDirect3DDevice9::SetTransform方法来设置世界变换矩阵,调用SetTransform方法时需要设置参数1的变换类型为D3DTS_W

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档