清华大学DirectX游戏编程第3章(全20章)
清华大学DirectX游戏编程
清华大学DirectX游戏编程
2
第3章 渲染管道本章的主题是渲染管道。 本章的主题是渲染管道。渲染管道主要用于 创建一个二维图像, 创建一个二维图像,该二维图像是通过在指定 位置设置的虚拟摄像机可以观察到的三维世界 中物体的影像。 中物体的影像。 主要目标:学习怎样在Direct3D中描述三维物体。 学习怎样设置虚拟摄像机。 理解渲染管道——利用几何方法描述三维场景的 步骤以及怎样获得用于描述三维场景的二维图像。
清华大学DirectX游戏编程
3
3.1 描述的模型一个场景是由物体或者模型所组 成的。 成的。物体可以通过三角形网格进 行近似的描述,如图3.2所示 所示。 行近似的描述,如图 所示。 网格中的三角形是物体的基本组 成部分。 成部分。 一个多边形的两条边的相交点是 多边形的顶点, 多边形的顶点,可以通过指定三角 形的三个顶点来描述三角形(见图 形的三个顶点来描述三角形 见图 3.3)。描述一个物体的时候,只需 。描述一个物体的时候, 要指定构成物体的那些三角形。 要指定构成物体的那些三角形。
清华大学DirectX游戏编程
4
3.1.1 顶点格式在Direct3D中,顶点可以拥有颜色属性以及 中 法线向量属性 创建一个自定义的顶点格式, 创建一个自定义的顶点格式,首先需要创建 一个顶点数据结构,用于保存顶点数据。 一个顶点数据结构,用于保存顶点数据。 例如, 例如,下面这段代码中定义了两种不同的顶 点格式,一种顶点格式保存了位置和颜色信息, 点格式,一种顶点格式保存了位置和颜色信息, 另一种顶点格式保存位置、 另一种顶点格式保存位置、法向量以及纹理坐 标信息: 标信息:参见教材P59
清华大学DirectX游戏编程
5
3.1.1 顶点格式定义完顶点结构后, 定义完顶点结构后,需要使用灵活顶点格式 (FVF)标志来描述顶点的组成格式。例如对于 标志来描述顶点的组成格式。 标志来描述顶点的组成格式 前面定义的顶点结构可以通过如下的灵活顶点 格式进行描述。 格式进行描述。(1) 要描述包含位置属性和散射颜色属性的顶点 结构时,灵活顶点格式标志为: #define FVF_COLOR (D3DFVF_XYZ | D3DFVF_DIFFUSE) (2) 描述包含位置属性、法向量属性以及纹理坐 标属性的顶点结构时,灵活顶点格式标志为: #define FVF_NORMAL_TEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1)
清华大学DirectX游戏编程
6
3.1.2 三角形三角形是构成三维模型的基本元素。 三角形是构成三维模型的基本元素。通过创建三角 形的列表来描述物体的形状和轮廓来构建一个物体。 形的列表来描述物体的形状和轮廓来构建一个物体。三角形列表中包含了每个需要渲染的三角形的数据。 三角形列表中包含了每个需要渲染的三角形的数据。
例如,如果需要构建一个矩形, 例如,如果需
要构建一个矩形,可以将矩形分成两 个三角形,并且指定所有三角形的顶点(见图 见图3.4): 个三角形,并且指定所有三角形的顶点 见图 :Vertex rect[6] = {v0, v1, v2, // 三角形0 v0, v2, v3}; // 三角形1
清华大学DirectX游戏编程
7
3.1.3 索引通常组成三维物体的三角形都会使用许多相 同的顶点,如图3.4中的矩形所示 中的矩形所示。 同的顶点,如图 中的矩形所示。 如在图3.5中 该立方体有 个独立顶点 个独立顶点, 如在图 中,该立方体有8个独立顶点,但 是其中有许多顶点将在构建立方体的不同三角 形中被重复使用。 形中被重复使用。
清华大学DirectX游戏编程
8
3.1.3 索引索引的工作原理是: 索引的工作原理是:在创建一个顶点列表的 同时创建一个索引列表。 同时创建一个索引列表。顶点列表中存储了所 有独立顶点的数据,索引列表中存储所有三角 有独立顶点的数据, 形的顶点对应独立顶点数据在顶点列表中的索 引。 在索引列表中通过不同的索引来定义顶点如 何组合以组成三角形: 何组合以组成三角形:WORD indexList[6] = {0, 1, 2, // 三角形0 0, 2, 3}; // 三角形1
清华大学DirectX游戏编程
9
3.2 虚拟摄像机图3.6展示了空间中的摄像机以 展示了空间中的摄像机以 及摄像机的拍摄范围。 及摄像机的拍摄范围。 摄像机可见的体积范围是一个 平截台体,由视角范围、 平截台体,由视角范围、近平面 和远平面来决定。 和远平面来决定。 投影窗口是个二维的区域, 投影窗口是个二维的区域,平 截台体内的三维几何体都将投影 到这个二维窗口上, 到这个二维窗口上,从而生成一 个代表三维世界的二维图像。 个代表三维世界的二维图像。投 影窗口被定义在最小值为(-1, 影窗口被定义在最小值为 ,-1) 到最大值(1, 范围之间 范围之间, 到最大值 ,1)范围之间,这一 点是非常重要的。 点是非常重要的。
清华大学DirectX游戏编程
10
3.3 渲 染 管 道图3.7提供了对渲染管道的简单描述 提供了对渲染管道的简单描述
渲染管道中的很多步骤中, 渲染管道中的很多步骤中,都要将几何物体从一个 坐标系中变换到另一个坐标系中去。这些变换都通过 坐标系中变换到另一个坐标系中去。 矩阵来完成。 矩阵来完成。 例如,在图3.7中 例如,在图 中,如果需要设置一个从本地空间向 世界空间的变换,可以进行如下设置: 世界空间的变换,可以进行如下设置:Device->SetTransform(D3DTS_WORLD, &worldMatrix);
清华大学DirectX游戏编程
11
3.3.1 本地空间本地空间(或者称为模型空间 指定义组成 本地空间 或者称为模型空间)指定义组成 或者称为模型空间 物体的三角形列表时所使用的坐标系统。 物体的三角形列表时所使用的坐标系统。 本地空间在简化模型处理工作上是相当有 用的。 用的。 在模
型的本地空间中创建模型比在世界 空间中创建模型要简单些。 空间中创建模型要简单些。 比如,本地空间中创建物体时,不需要 考虑物体的位置、大小以及与世界空间 中其他物体的关系。
清华大学DirectX游戏编程
12
3.3.2 世界空间将本地空间的物体变换到世界空间需要进行 的一系列变换,这被称为世界变换, 的一系列变换,这被称为世界变换,这些变换 包括平移操作、旋转操作以及缩放操作, 包括平移操作、旋转操作以及缩放操作,分别 用于设置模型在世界坐标系中的位置、方向以 用于设置模型在世界坐标系中的位置、 及大小。 及大小。 世界变换完成世界空间中所有物体位置, 世界变换完成世界空间中所有物体位置,包 括大小、方向,以及相互之间关系的设置。 括大小、方向,以及相互之间关系的设置。 世界变换用矩阵来表示, 世界变换用矩阵来表示,在Direct3D中用 中用 IDirect3DDevice9::SetTransform方法来设置 方法来设置 世界变换矩阵,调用SetTransform方法时需 世界变换矩阵,调用 方法时需 要设置参数1的变换类型为 的变换类型为D3DTS_WORLD。 要设置参数 的变换类型为 。
清华大学DirectX游戏编程
13
3.3.2 世界空间对于本地坐标系和世界坐标系概念的理解, 对于本地坐标系和世界坐标系概念的理解, 可进一步参考图3.8、 。 可进一步参考图 、3.9。
清华大学DirectX游戏编程
14
3.3.3 视图空间在世界空间中, 在世界空间中,几何物体和摄像机都是相对 于世界坐 …… 此处隐藏:2398字,全部文档内容请下载后查看。喜欢就下载吧 ……
- 基于PLC控制的航空电镀生产线自动输送
- 中考预测课内外文言文对比阅读2
- 2018-2023年中国商业智能(BI)产业市场
- 中国金融体制改革研究2011new
- 外窗淋水试验方案
- 精益生产(Lean Production)
- 学校安全事故处置和信息报送制度
- Chapter 5 Human Resources Management
- 【小学数学】人教版小学六年级上册数学
- 初中数学解题方法与技巧
- 山东省创伤中心建设与管理指导原则(试
- 函数与数列的极限的强化练习题答案
- 10分钟淋巴按摩消脂
- 网络应急演练预案
- 服装设计入门基础知识
- 初二数学分式计算题练习
- (人教新课标)高二数学必修5第二章 数列
- 最新自主创业项目
- 北京大学 无机化学课件 4第4章 配合物
- 贸易公司业务管理制度




