DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)
本文由哈利_蜘蛛侠原创,转载请注明出处。有问题欢迎联系2024958085@qq.com
注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码。相同的情况适合于“龙书”第二版。
上一期的地址:
这一章的内容非常短所以也是相对轻松的一期了。只是这一章的内容要深入理解的话并非非常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(渲染管线)的更多相关文章
- DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
- DirectX 11游戏编程学习笔记之1: 开场白
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 这是我之前的博客系列"DirectX9.0c游戏开发手记之'龙书'第二版学习笔记 ...
- DirectX 11游戏编程学习笔记2: 文章1章Vector Algebra(向量代数)
本文由哈里_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页.而实体书是800多页,所以我在提到相关概念的时候.会使用章节号而 ...
- 【Visual C++】游戏编程学习笔记之六:多背景循环动画
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44264153 作者:ZeeCod ...
- 【Visual C++】游戏编程学习笔记之四:透明动画实现
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...
- 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)
本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder 微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...
- 【Visual C++】游戏编程学习笔记之七:键盘输入消息
本系列文章由@二货梦想家张程 所写,转载请注明出处. 作者:ZeeCoder 微博链接:http://weibo.com/zc463717263 我的邮箱:michealfloyd@126.c ...
- 【Visual C++】游戏编程学习笔记之五:单一背景滚动
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...
- 【Visual C++】游戏编程学习笔记之三:游戏循环的使用
本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44208419 作者:Zee ...
随机推荐
- tips 前端 点击事件
新手总是时不时会纠结一下 点击事件 我们都知道这些小东西不难 但是偶尔难道不会想想我们可能对这些即使小kiss的问题的认知其实不够清晰 一个认识不清晰的东西使用时 总会有油然而生的不安感 从而用的不放 ...
- c++ 操作防火墙
原文转自 https://msdn.microsoft.com/zh-cn/library/aa364726(v=vs.85).aspx #include <windows.h> #inc ...
- libyuv编译(各平台)【转】
转自:http://blog.csdn.net/wszawsz33/article/details/51669719 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] Getti ...
- c专家编程读书笔记
无论在什么时候,如果遇到malloc(strlen(str));,几乎可以直接断定他是错误的,而malloc(strlen(str)+1):才是正确的: 一个L的NUL哟关于结束一个ACSII字符串: ...
- Ubuntu16.04搭建LAMP开发环境
Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...
- Profile 的翻译
最近要翻译一个英文网站的单词,正宗的英文网站总是有很多单词让我烦恼,这就是其中一个. 特地转一篇文章,对我大有帮助. 计算机中常用的 Profile 该如何理解? 我认为 Profile 即可作名词又 ...
- 【linux高级程序设计】(第十三章)Linux Socket网络编程基础 4
网络调试工具 tcpdump 功能:打印指定网络接口中与布尔表达式匹配的报头信息 关键字: ①类型:host(默认).net.port host 210.27.48.2 //指明是一台主机 net 2 ...
- svn 基本使用
通过脚本删除物理文件已经不存在的文件 svn st | sed -n '/!/p' | awk '{print $2}' | xargs svn delete 或 svn st | awk '{if ...
- 洛谷——P1403 [AHOI2005]约数研究
P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...
- 洛谷——P1143 进制转换
P1143 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进 ...