首先得聲明我這篇文章只有很少的篇幅介紹龍書,其實我是想寫點東西給那些看完龍書的人。
這是我接觸3D圖形編程的第一本書,接觸3d圖形編程前,我看的是《Windows 游戲編程大師技巧》,只看了前幾章,當時我急着想去學3D的酷玩意兒,立刻就沒耐心看GDI,DirectDraw。轉投Direct3D門下,入門書當 然是這本龍書了。對我來說龍書最棒的地方在於,它除了開始的數學基礎章節外,每一章都能詳細地引導讀者去實現一個簡單的3D特性,從畫三角形到攝像機,到 簡單的粒子系統,地形,甚至到shader。Luna無疑是睿智而狡猾的,他知道初學者往往耐心不夠,所以他總是適時地丟出個胡蘿卜,讓讀者保持着繼續的 動力。這一點是我在《Windows 游戲編程大師技巧》沒看到的。(見鬼,誰愛去學畫線那點破玩意...這里完全是個人情感,我沒看完后者,所以沒資格評價)
但是Luna忽視了一點,就是學完了龍書該做什么?他或許沒想到有很多投身於游戲編程的孩子都是像我這樣,眼高手低而且懶於探索,愛看現成內容的。起初的 他們編程基礎不扎實(1年編程經驗),完全不了解圖形學(就龍書那點,而且多半只是照葫蘆畫了個瓢,還是不懂原理)。於是這些孩子后來的日子就苦了。
由於他缺乏埋頭苦干的品質,於是他們只能上網尋找高人指點如何走下面的路,接着他苦苦尋找該如何理解和實現更高深的內容,去看DirectX Sampler里晦澀的代碼,雖然很多知識對當時缺乏實際代碼經驗的他實在有點難,在這樣茫茫然然浪費了許多時光之后,他找到一本還可以的英文書,里面雖 然內容不深,但是一步一步教着去實現了簡單的Demo,里面包含了蹩腳的封裝,難堪的場景管理,但對他來說還是可以夠到的,於是他終於東拼西湊地寫出了第 一個屬於自己的Demo。他看到了自己的不足,但還不知道如何改進,他覺得這個學習之旅越來越難,懶惰催促着他該放棄了。但他的內心不願放棄這個童年的夢 想,於是他甚至逼迫自己翻譯了另一本英文書籍,他又能看懂更多了。或許是冥冥中的必然,他看到了Ogre,在經歷的那么多晦澀的代碼后,學習Ogre已經 不再是那么難了,他在同學的幫助下熟悉了部分Ogre,寫了更多的代碼,看了更多的代碼。終於,他發現曾經如同天書的RTR,現在閃爍着金色的光芒,而他 發現自己圖形的基礎實在太差了,而且對圖形引擎的細節還是一知半解(游戲引擎更別說了)。於是他便開始閱讀ogre的源碼,並納為己用......
我不知道還有沒有像我這樣的笨蛋,但現在回頭想想,自己當初如果能有個人來指點一二,並且沉下心,多寫代碼,今天我能走的更遠。下面就是推薦學習的路線:
0.耐下性子,認真學習數據結構與算法,至少要學到圖。這是我當年沒有好好做而如今最后悔的步驟,推薦書無所謂,嚴蔚敏的也行,allen weiss的最好,但最重要的是不是光去理解,而是自己去實現,你會發現后者比前者難的多。
1.DirectX的龍書,我推薦看清華大學翻譯的這個,首先段菲翻譯的的確很不錯,有些地方譯者還加了自己的話和推薦的書外閱讀,雖然有些鏈接失效 了,但這是原版沒有的(准確的說是翁雲兵先生翻譯的版本里沒有的,原文我沒看過)。其次,處於尊重版權,我也推薦去買這本書,而不是下電子版,相信我,對 於初學者來說,這本書在你學習3d編程的一兩年內,你還是能在從中學到知識的。
2.實現龍書,我不是說把他的例子抄一遍。這時候你需要做的是,把龍書的代碼推掉,利用龍書的所有內容,重新自己寫一個小的demo,可以就是一個小 場景漫游,但是希望你開動想象力,多寫點邏輯,多寫點獨特的非圖形的東西,不要覺得這很難,其實隨便想一個簡單的東西都有夠你寫的,推薦看這篇文章,你會 發現靈感有時候沒那么難出現:http://www.gamelook.
3.這個時候,如果上述步驟你都完成了,恭喜你,你已經不再是初級菜鳥了,首先,你需要去買 RTR(Real-Time Rendering英文版 ,淘寶上影印80),然后,程序設計上我推薦買一本大話 設計模式,把其中簡單的模式看一下,看不懂的就別看(那說明你還沒到那水平,或者說還沒遇到過這個模式能解決的問題)。接着,推薦你閱讀clayman大人很有名的一篇 博客:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html
然后去選擇一個方向去閱讀文中推薦的書籍,我推薦是地形和動畫,因為這兩個方向的書我看過。。。 《Real Time 3D Terrain Engines Using C++ And DX9》網上有我翻譯的中文版,雖然代碼的確需要花一定的時間去理解(作為demo,代碼寫的不錯,可以算一個小的圖形引擎了),不過場景管理還是圖形里 相當核心的一塊,所以讀還是有好處的,不過我的建議也是讀完4到9章和附錄就可以實際編碼了。而后者 《Character Animation With Direct3D》代碼淺顯易懂,而且人物動畫絕對是當今次世代的一個大頭,我雖然沒有全看完,但還是相信這本書絕對很值得一讀。讀完后最后重構你之前寫 的demo吧,並且加入這兩本書的特性。
4 你將從菜鳥學院畢業了,現在的你對圖形已經不再一竅不通,對程序結構也不再那么陌生。下面我終於要向你推薦Ogre了,你將很愉悅的略讀一下 《Pro OGRE 3D Programming》,(打工仔一幫人翻譯了中文版),到此你當初寫demo時的許多難題在這里或許能引擎共鳴,然后你將很輕松地閱讀ogre的官網 的初中級教程,如今的你手握一個文檔詳細,社區活躍的圖形引擎,接着拿着他重新去寫一個小游戲吧,要求還是一樣,盡可能多地利用所學知識。
是的,我還想寫第5條,但我忍住了,因為曾經有個笨蛋經過或跳過了上述幾個階段后,學到了甚至更多的東西,最重要的是如今他不再需要有人來指點,便可以確定自己該走哪一條路,雖然他不一定看不到旅途的終點,但已然能夠嘹望到前方的光明。所以我相信,你也能:)
ps:希望大家有經濟能力的還是購買正版書籍,亞馬遜沒那么麻煩,而且淘寶上其實有很多代購的。