zoukankan      html  css  js  c++  java
  • DirectX 11游戏编程学习笔记之6: 第5章The Rendering Pipeline(渲染管线)

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

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

     

  • 相关阅读:
    mysql 数值函数
    java服务器简单实现
    利用monkeyrunner实现Android屏幕连续截图
    (Access denied for user 'root'@'localhost' (using password: NO))
    Java 基础之 static 静态
    天坑 之 Eclipse J2EE Preview 运行正确项目一直显示http 404
    Java web 实现 之 Filter分析ip统计网站的访问次数
    JSP 实现 之 读取数据库显示图片
    【转】焦虑、渴望中挣扎的我们,如何定义成功和失败?
    【转】美团点评技术团队金融核心交易系统可用性7个9是这样炼成的
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6796226.html
Copyright © 2011-2022 走看看