DirectX是微軟公司開發的一套功能豐富的底層API,其功能涵蓋了對2D/3D圖形加速的支持、對各種輸入設備的控制,以及對聲音和音樂輸出的混音和采樣、對多玩家網絡游戲的控制、對各種多媒體流模式的控制等。DirectX設計者的初衷是讓Windows成為理想的游戲開發平台,如今他們正逐步實現這一理想。實際上,雖然不斷遭遇同樣出色的競爭對手(如OpenGL)的挑戰,但目前的形勢是——DirectX在游戲開發領域已經無可爭議地佔據王者地位,而且這種趨勢極有可能保持下去。當然,這並不是說DirectX能夠完全取代其他API,只是“術業有專攻”,各自有不同的擅長領域罷了。
DirectX在體系結構上很突出的優點是它使用了兩層驅動-HAL和REF,那些為硬件所支持的特定功能可由HAL來控制(即可以充分地發揮硬件的加速功能),從而可以獲得理想的運行速度。而對于那些不為硬件所支持的功能,借助REF,程序能夠以軟件方式來模擬相應的運算或處理過程,從而使得無論硬件配置是否高端,開發人員都可以完整地體驗和測試DirectX所提供的全部功能。
關于DirectX原理及編程的書籍,目前國內還很少,能體現出DirectX 9.0版本新特性的書籍更是少之又少。這本《DirectX 9 0 3D游戲開發編程基礎》可以說從定程度上彌補了國內圖書市場的缺憾。這本書專注于講解DirectX與圖形繪制及渲染相關的一個核心子集-Direct3D,是DirectX
3D圖形編程領域的一本經典著作,在國外自出版以來,就一直雄踞此類書的銷量榜酋。該書有一些很鮮明的特點︰
(1)授人魚,更授人與漁
本書在注重講解原理和方法的同時,也注重引導讀者如何獲取知識,如何利用DirectX
SDK幫助文檔,非常有利于提高讀者的學習能力。尤其需要指出的是,作者專門為本書維護了一個網站www.moon-labs.com,這網站上不但有全書所有例程的源代碼,還在此提供了與之相關但由于篇幅所限而略去的重要主題文檔。同時,作者設立了一個DirectX技術的討論區(作者的電了郵件地址是
[email protected]),並時常親自出面答疑。這些資源對于讀者的作Hj無疑是不可估量的。
(2)內容全面,由淺入深
本書根據由易到難的順序合理安排各章,剛入門的讀者只需按書中的章節順序安排學習,即可順利掌握各章內容。本書雖屬導論性質的著作,但是內容的跨度相當大,從基礎的數學原理講起,涵蓋了D,rect3D初始化、繪制流水線、顏色、光照、紋理、融合、模板、字體、網格、地形繪制、粒子系統、拾取技術直到高級著色語言和效果框架,基本上涵蓋了Direct3D常用的方方面面。書中某些章節的實例雖然算法比較簡單,甚至不夠實用,但從理解原理的角度來看還是很適宜的,而且這樣可以為讀者提供更多的思考空間。
(3)提供了一個清晰的程序框架
本書中所有的例程都用到了作者自編的一個程序框架,層次非常清晰,降低了程序中各模塊的耦合性。該框架將所有程序都需要進行的公共操作封裝起來,使得讀者在學習新知識點時,精力不必分散到與當前主題無關的那些工作中。
(4)實例豐富、理論與實踐並重
本書的每一章都是在講解原理的同時插入小段代碼片段來形象地進行輔助說明,而且每章或每個大主題的最後,都會附上一個完整的綜合性實例,非常有助于讀者加深對當前主題的理解。
本書的作者FrankD Luna是位著名的游戲開發專家,他從事交互式圖形程序的研究與開發已有8年,而且有超過10年的c++編程經驗。從DirectX 5.0起,Luna就一直在關注和使用DirectX.
作為譯者,本人在翻譯過程中力求忠于原作。書中所涉及的所有專業術語,都查閱了大量國內外相關文獻,並請教了許多專家學者,力求找到最完美、最準確的澤法,並在可能引起歧義和沖突的地方做了適當調整。同時,在專業術語第一次出現或在容易混淆的環境中出現時,都注上了該術語的英文原文,以便讀者進行對比理解。為保證正確性,本書所有例程都在DirectX October 2006版和Visual C++
2005中進行了調試和驗證。另外在翻譯過程中,修正了原書中的若干小錯誤和紕漏,並參照DirectX Oct 2006 SDK文檔進行了修正。
本書全部章節的翻譯都由譯者一人完成,其間得到了清華大學出版社的大力支持,特別是文開琪編輯和宣穎編輯,她們投入了大量時間和精力,為該書的譯稿提出了許多寶貴的修改意見,在此向她們表示深深的感謝。限于譯者的水平,書中的錯誤和不妥之處在所難免,懇請讀者批評指正,本人的郵箱
[email protected]或
[email protected],熱切期待著讀者朋友的來信!