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

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

上一期的地址:

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

这一章的内容非常短所以也是相对轻松的一期了。只是这一章的内容要深入理解的话并非非常easy。另外这一章非常多内容与“龙书”第二版的第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

这一节还是比較重要的。也非常easy理解。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题挺有意思的,大家能够琢磨琢磨。

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

最新文章

  1. jqueryEasyUI:tabs扩展:给tabs组件绑定双击事件 分类: JqueryEasyUI 2014-09-29 14:36 537人阅读 评论(0) 收藏
  2. VC++ MFC子对话框建立与关闭
  3. CSS 文字阴影(text-shadow)怎么用
  4. Linux添加新硬盘自动挂载硬盘
  5. Request Session生命周期及struts1 中service的编写
  6. 设置lable文本内容的行间距
  7. erp中三大订单CO、PO、MO各是代表什么?
  8. c++primer复习(一)
  9. 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释
  10. CAGradientLayer实现色差动画
  11. ubuntu 14.04 下 yii2 下载安装
  12. linux学习之(四)-用户、组的操作,给文件文件夹设置组,更改目录权限、文件权限
  13. java中基本数据类型和C语言中基本数据类型转换
  14. js:如何在循环异步请求的每次返回中添加想要的值
  15. EF 数据重复和缺失问题(select 错误 )
  16. jq切换面板
  17. DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
  18. webstorm的快捷键总结
  19. python 运行环境
  20. ubuntu16.04安装matlab2016b

热门文章

  1. mac的vim使用
  2. ASIHttprequest-创建同步请求
  3. quartz 调度
  4. JS将JSON日期转换为指定格式的日期
  5. 废弃sqlite代码,备查
  6. ldd命令【转】
  7. 正则表达式之Regex.Match()用法
  8. (3)Oracle提供的.net连接驱动
  9. (30)C#Timer类
  10. Hihocoder 1634 Puzzle Game(2017 ACM-ICPC 北京区域赛 H题,枚举 + 最大子矩阵变形)