现在的位置: 首页 > 综合 > 正文

DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)

2018年04月09日 ⁄ 综合 ⁄ 共 2849字 ⁄ 字号 评论关闭

        本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系2024958085@qq.com

 

        注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码。同样的情况适合于“龙书”第二版。

 

        上一期的地址:

DX 11游戏编程学习笔记之5

 

        这一章的内容很短所以也是相对轻松的一期了。不过这一章的内容要深入理解的话并不是很容易。另外这一章很多内容与“龙书”第二版的第6章内容是一样的,并且包含了“龙书”第二版第9章关于颜色的内容,所以对于“过来人”来说还是比较易学的。

重点回顾:

===============================================================================

        我们一如既往地把学习目标放在这里:

1、 To discover several key signals used to convey a realistic sense of volume and spatial depth in a 2D image.(发掘将具有体积和空间深度的真实感转换成2D图像的几个关键信号。)

2、 To find out how we represent 3D objects in Direct3D.(学习我们如何在Direct3D
中表示3D物体。)

3、 To learn how we model the virtual camera.(学习怎样对虚拟摄像机进行建模。)

4、 To understand the rendering pipeline—the process of taking a geometric description of a 3D scene and generating a 2D image from it.(理解渲染管线——取得3D场景的几何描述、并从中生成一个2D图像的过程。)

 

5.1 The 3D Illusion

        这一节给出了让2D图形有3D感觉的几个要素:

1、  平行线相交于无穷远点;

2、  同一物体远小近大;

3、  不透明的物体会挡住其后面的其他物体;

4、  光照导致的明暗变化;

5、  阴影。

 

5.2 Model Representation

        这一节引入了Mesh的概念,告诉我们3D物体是以mesh 表示的。另外这里介绍了一些著名的3D建模软件。这方面的内容跟“龙书”第二版那里也是几乎一样的,但是这里增加了一个新的建模软件Blender。Blender是开源的免费软件,用它制作的模型是完全免费的,而且功能很强大——当然这些话书上是没有的。

 

5.3 Basic Computer Color

        这一节基本上可以说涵盖了“龙书”第二版第9章里关于颜色的内容了。不过这里用来表示颜色的变量的类型与那里很不一样了:这里用XMVECTOR 来表示128位的颜色,而用XMCOLOR 来表示32位的颜色。

        此外,这里讲到了“龙书”第二版中没有讲到的一些东西。一个是,当颜色成分值越界后会发生什么事情?答案是会发生clamp。另一个是,128位颜色和32位的颜色的关系是什么样的?答案是:128位颜色用于做精确的计算,而32位颜色用于做最终的显示;显示器没法显示精度超过32位的颜色。

 

5.4 Overview of the RenderingPipeline

        这一节等于什么都没讲,就给了张图:

 

5.5 The Input Assembler Stage

        这一节分为三小节,分别讲述了顶点(Vertices)、图元拓扑(Primitive Topology)和索引(Indices)这三个内容。这里顶点讲得比较简略,因为要到第6章才能够结合代码详细讲述。而Primitive Topology 部分比较多,这里也是和DirectX 9.0c 区别比较大的部分。这里相当于DirectX 9.0c 中的D3DPRIMITIVETYPE,但是增加了很多新的类型,并且原来有的TRIANGLEFAN 现在也无迹可寻了。

        可能有一些内容不太好理解(比如5.5.2.6节Primitives with Adjacency),不过不用着急,等我们以后用到的时候再说吧!

 

5.6 The Vertex Shader Stage

        这一节讲述了世界变换、视角变换和投影变换等内容。也不是很难,不过最后最后那一小节确实需要点时间去理解。没法一次性消化完也没关系,知道那个投影矩阵就行了。况且我们在代码中也不需要去手动设置那个矩阵。

5.9 Clipping

        这一节内容比较好理解,不过我们只需要了解一下就行了 。

 

5.10 The Rasterization Stage

        这一节还是比较重要的,也很容易理解。5.10.2节Backface Culling 是很重要的,我们以后会用到。

 

        至于第5.7、5.8、5.11和5.12这些部分,我们只需要知道它们存在就行了,以后会慢慢接触到的。

 

===============================================================================

 

勘误:

===============================================================================

1、  第5.2节Model Representation 那里,出现了Blender 之后的那句话,“Nevertheless, for the first part of this book”中的first 应为second。

2、  第5.3节Basic Computer Color 中的图5.8 因为是黑白图,所以看不出暗红色和亮红色的变化。书中DVD 里面的彩图是这样的:

3、  第5.5.2.6节最后一句话中的“and triangle with strip adjacency primitives”语序错误,应该是这样:and triangle strip with adjacency primitives。

4、  第5.6.2节最后的几个公式可能有点问题。比如说这个公式:

如果向量j与w平行怎么办?如果摄像机左右倾斜怎么办?那么这个公式就不成立了。不过最后的那几行代码还是正确的,也是我们大部分时候都采用的设置摄像机的方法。

 

===============================================================================

 

习题解答:

===============================================================================

        这一章的习题都是数学题,所以我又偷懒了!不过第13题和第14题挺有意思的,大家可以琢磨琢磨。

===============================================================================

 

抱歉!评论已关闭.