【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的動力~ 此外,每更新一次筆記,我會附上作者的代碼,這個更具有研究價值,歡迎免費下載,喜歡遊戲編程的童鞋可以相互交流~ 我也是純新手。。。

       (還有一點就是,由於平時真的很忙,所以更新時間不固定,見諒~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章