本文由哈利_蜘蛛侠原创,转载请注明出处。有问题欢迎联系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. tips 前端 点击事件

    新手总是时不时会纠结一下 点击事件 我们都知道这些小东西不难 但是偶尔难道不会想想我们可能对这些即使小kiss的问题的认知其实不够清晰 一个认识不清晰的东西使用时 总会有油然而生的不安感 从而用的不放 ...

  2. c++ 操作防火墙

    原文转自 https://msdn.microsoft.com/zh-cn/library/aa364726(v=vs.85).aspx #include <windows.h> #inc ...

  3. libyuv编译(各平台)【转】

    转自:http://blog.csdn.net/wszawsz33/article/details/51669719 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] Getti ...

  4. c专家编程读书笔记

    无论在什么时候,如果遇到malloc(strlen(str));,几乎可以直接断定他是错误的,而malloc(strlen(str)+1):才是正确的: 一个L的NUL哟关于结束一个ACSII字符串: ...

  5. Ubuntu16.04搭建LAMP开发环境

    Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...

  6. Profile 的翻译

    最近要翻译一个英文网站的单词,正宗的英文网站总是有很多单词让我烦恼,这就是其中一个. 特地转一篇文章,对我大有帮助. 计算机中常用的 Profile 该如何理解? 我认为 Profile 即可作名词又 ...

  7. 【linux高级程序设计】(第十三章)Linux Socket网络编程基础 4

    网络调试工具 tcpdump 功能:打印指定网络接口中与布尔表达式匹配的报头信息 关键字: ①类型:host(默认).net.port host 210.27.48.2 //指明是一台主机 net 2 ...

  8. svn 基本使用

    通过脚本删除物理文件已经不存在的文件 svn st | sed -n '/!/p' | awk '{print $2}' | xargs svn delete 或 svn st | awk '{if ...

  9. 洛谷——P1403 [AHOI2005]约数研究

    P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...

  10. 洛谷——P1143 进制转换

    P1143 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进 ...