(转)【D3D11游戏编程】学习笔记一:最新版D3D11龙书
(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)
前一段时间破费从美国Amazon上买到了一直梦寐以求的游戏编程方面的书,其中包括介绍Direct3D方面最经典的“龙书”:《Introduction to 3D Game Programming with Direct3D 11》。
自一年前读完D3D9那版以后就深深被作者Luna的写作风格吸引住了,再复杂的技术在他笔下一切变得浅显易懂,从头到尾由浅入深,跟着作者的思路看下来基本不会感觉到任何跳跃,知识自然而然地就掌握了。尤其是每章配套的例子程序,包括作者从头到尾不断完善的框架,更是值得仔细地学习。
一直期待新版的龙书,又不甘心苦苦等待网上的电子版,干脆决心一下,从网上直接把英文原版买下来了,这么好的书除了研究之外当然也具有很高的收藏价值。这本书足足有864页,平装,而且价格才30多美元,相比其他游戏编程、图形学方面的书真的是相当便宜了,再次感慨龙书的货真价实!不过“龙书”这个名字最初应该是因为d3d9那版书的封面上印的一只恐龙吧,最新d3d11这版封面可不是恐龙啦,而是炫丽的反射有周围场景的水滴(猜想可以是作者用来描述Enviroement Mapping的....),作者可能想传达的意思是,等学完这本书,我们将可以用d3d11来实现这种特效吧~ 不过,对于某一方面特别出众的书,大家都习惯上称之为龙书了(不过封面上确实都画有恐龙。。。),所以对于这本最新版的,还是继续叫龙书吧~
相比d3d9那一版,d3d11可以说是一次重量级的改版。确切地说真正的改版是从d3d9到d3d10,d3d10到d3d11只是针对windows7而增加了部分功能。不过我没买d3d10那本,看了d3d9直接跳到d3d11的,所以我就直接拿11跟9来比较了。
开始看这本书有一段时间了,就目前而言,d3d11给人的印象还是相当地好。API设计地更加清晰、易用,在有d3d9的基础上学的话还是相当快的。这一版如此厚,当然内容上肯定会有不少的变化,相比前版,最大的变化在于以下几方面:
1. 全新的数学库:之前有关数学运算的库,包括向量、矩阵、变换等操作,都被包括在d3dx扩展库中,这一版中数学库被分离了出来,称为XNA Math。这是微软专门针对数学操作精心设计的一套API,底层用到了SIMD(Single Instruction Multiple Data)指令集,效率相当高,非常适合学习之用。整个库全部位于<snamath.h>头文件中。
2. 着色器要求明显变高:在d3d9中可以不写一行shader全部用固定管线来实现一些常见的效果,但从d3d10开始固定管线被彻底丢弃了,可编程管线必须由程序员自己写shader来实现,在d3d11中shader要求依然很高。最最基本的,vertex shader和pixel shader要会,其他管线暂时不会无所谓,optional。
3. d3d11新增管线: Geometry Shader,vertex shader stage后的可选段,用来对基本图元进行操作(Triangle,Line,Point...),或删除,或增加新图元;Tessellation Stage,即曲面细分阶段,利用输入的控制点(control points)来进行细分生成更详细、高精度的网格,典型的应用即LOD(level of detail)。这阶段包括三个小阶段:hull shader stage(可编程), Tessellation stage(不可编程),domain shader(可编程);Compute Shader,利用GPU提供的强大多核、多线程处理能力,来进行除图形以外的通用计算,因此也被称为GPGPU(General Purpose GPU Programming)。
这本书内容如下:
全书共分为三大部分:第一部分为基本数学知识,包括向量、矩阵、变换,当然还有XNA Math库的介绍,冲着全新的高性能数学库,这一部分也很值得一看。第二部分为d3d11的基础知识,包括d3d11的渲染管线、基本图元绘制、光照计算、纹理、混合、模版缓冲(Stencil Buffer),还有最新的的Geometry Shader、Tessellation、Compute Shader。第三部分为d3d11的应用,来实现一些特效,如第一人称照相机(FPS),拣选(Picking),地形渲染、粒子系统、风格(Mesh),这些相信读过d3d9版的童鞋相应很熟悉吧,不过作者这次用d3d11来实现,效果完全不一样哈,值得期待!当然还有很好更高级的特效,如法线映射(Normal Mapping、Displacement Mapping),环境映射(Cube Mapping、Environment Mapping),全局光照,角色动画等等(不止这些)。总之,相比于30多美元的价格,实在太值了!
如果说在Windows7出来后的年代,XP系统依然很受欢迎,尤其在国内,相当一部分游戏玩家依然守在XP上,因此d3d9十分重要的话,那么,现在Win8上市,更大的市场应该在Win7以上了吧?d3d11最初就是为win7而生的,那么在游戏领域,d3d11在今后几年中肯定会被广泛应用,而d3d9会逐渐被取代。更重要的是,d3d11也将在win8上扮演重中之重的角色(Luna说的....)因此,对于想从事游戏开发行业的童鞋,现在就开始研究d3d11吧~
最后奉上几张精彩截图~~
当然,要想能够自己实现这些特效,还是要静下心来从头开始一步一步来滴。对于暂时没法得到英文原版书或中文版(应该还要很久。。。)的童鞋,希望我的简要的笔记也能够对你们起到一点点帮助,最起码激起你们学习d3d11的动力~ 此外,每更新一次笔记,我会附上作者的代码,这个更具有研究价值,欢迎免费下载,喜欢游戏编程的童鞋可以相互交流~ 我也是纯新手。。。
(还有一点就是,由于平时真的很忙,所以更新时间不固定,见谅~)