本文由哈利_蜘蛛侠原创,转载请注明出处。有问题欢迎联系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题挺有意思的,大家能够琢磨琢磨。

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

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

  1. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)

            本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...

  2. DirectX 11游戏编程学习笔记之1: 开场白

    本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com           这是我之前的博客系列"DirectX9.0c游戏开发手记之'龙书'第二版学习笔记 ...

  3. DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)

    本文由哈里_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页.而实体书是800多页,所以我在提到相关概念的时候.会使用章节号而 ...

  4. 【Visual C++】游戏编程学习笔记之六:多背景循环动画

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44264153 作者:ZeeCod ...

  5. 【Visual C++】游戏编程学习笔记之四:透明动画实现

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...

  6. 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...

  7. 【Visual C++】游戏编程学习笔记之七:键盘输入消息

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder  微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...

  8. 【Visual C++】游戏编程学习笔记之五:单一背景滚动

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...

  9. 【Visual C++】游戏编程学习笔记之三:游戏循环的使用

     本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...

随机推荐

  1. JAVA下几个问题

    一.Server MyEclipse Tomcat v8.5 was unable to start within 45 seconds. If the server requires more ti ...

  2. DotNETCore 学习笔记 Startup、中间件、静态文件

    Application Startup Startup Constructor - IHostingEnvironment - ILoggerFactory ConfigureServices - I ...

  3. Android BroadcastReceiver使用

    1. 介绍 BroadcastReceiver用于接收广播事件(Intent), 是Android四大组件之一 2. 使用 2.1  实现广播接收类 实现一个广播收类继承BroadcastReceiv ...

  4. linux c/c++ 代码使用 doxygen 自动生成文档

    www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...

  5. java基础练习 19

    public class Ninetheen { /*求1+2!+3!+...+20!的和*/ public static void main(String[] args){ int i,j; lon ...

  6. Java微信公众平台开发_01_本地服务器映射外网

    做微信开发之前,我们需要先做一个内网穿透,让我们的工程可以在公网上被访问. 一.工具列表 内网穿透的相关工具有: (1)natapp 官网 :https://natapp.cn/ (2)花生壳 官网: ...

  7. Centos的APK解包打包签名

    http://www.v5b7.com/other/apk.html vi /etc/profile PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:/u ...

  8. HDU 2063.过山车-Hungary(匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. 51nod 1091 线段的重叠【贪心/区间覆盖类】

    1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...

  10. Python的程序结构[1] -> 方法/Method[0] -> 类实例方法、私有方法和抽象方法

    类实例方法.私有方法和抽象方法 Python中最常用的就是类实例方法,类似于属性中的类实例属性,同时,也存在与私有属性类似方法,即私有方法,下面介绍这两种常见的方法,以及一种特殊意义的类实例方法 -- ...