內容簡介

本書主要介紹如何使用DirectX 9.0開發交互式3D圖形程序,重點是游戲開發。全書首先介紹了必要的數學工具,然後講解了相關的3D概念。其他主題幾乎涵蓋了Direct3D中的所有基本運算,例如圖元的繪制、光照、紋理、Alpha融合、模板,以及如何使用Direct3D實現游戲中所需的技術。介紹頂定點著色器和像素著色器的章節(包含了效果框架和新的高級著色語言的內容)對這些關鍵運算進行了較為集中的討論。

本書內容深入淺出,內容廣泛,可供從事3D游戲程序設計、可視化系統設計或其他圖形應用程序開發的開發人員和大中專院校學生參考,也極適合各種游戲開發培訓機構作為Direct3D編程的培訓教程。
 

目錄

第Ⅰ部分 基礎知識
必備的數學知識
3D空間中的向量
向量相等
計算向量的長度
向量的規範化
向量加法
向量減法
數乘
點積
叉積
矩陣
矩陣相等、矩陣數乘和矩陣加法
矩陣乘法
單位矩陣
逆矩陣
矩陣的轉置
D3DX矩陣
基本變換
平移矩陣
旋轉矩陣
比例變換矩陣
幾何變換的組合
向量變換的一些函數
平面(選讀)
D3DXPLANE
點和平面的空間關系
平面的創建
平面的規範化
平面的交換
平面中到某一點的最近點
射線(選讀)
射線
射線與平面的相交
小結
第Ⅱ部分 Direct3D基礎
第1章 初始化Direct3D
1.1 Direct3D概述
1.1.1 REF設備
1.1.2 D3DDEVTYPE
1.2 COM(組件對象模型)
1.3 預備知識
1.3.1 表面
1.3.2 多重采樣
1.3.3 像素格式
1.3.4 內存池
1.3.5 交換鏈和頁面置換
1.3.6 深度緩存
1.3.7 頂點運算
1.3.8 設備性能
1.4 Direct3D的初始化
1.4.1 獲取接口IDirect3D9的指針
1.4.2 校驗硬件頂點運算
1.4.3 填充D3DPRESENT-PARAMETERR結構
1.4.4 創建IDirect3DDevice9接口
1.5 例程︰Direct3D的初始化
1.5.1 d3dUtility.h/cpp
1.5.2 例程框架
1.5.3 例程︰D3D初始化
1.6 小結
第2章 繪制流水線
2.1 模型表示
2.2 虛擬攝像機
2.3 繪制流水線
2.4 小結
第3章 Direct3D中的繪制
3.1 頂點緩存與索引緩存
3.1.1 創建頂點緩存和索引緩存
3.1.2 訪問緩存內容
3.1.3 獲取頂點緩存和索引緩存的信息
3.2 繪制狀態
3.3 繪制的準備工作
3.4 使用頂點緩存和索引緩存進行繪制
3.4.1 IDirect3DDevice9::DrawPrimitive
3.4.2 IDirect3DDevice9::DrawIndexedPrimitive
3.4.3 Begin/End Scene
3.5 D3DX幾何體
3.6 例程︰三角形、立方體、茶壺、D3DXCreate*
3.7 小結
第4章 顏色
4.1 顏色表示
4.2 頂點顏色
4.3 著色
4.4 例程︰具有顏色的三角形
4.5 小結
第5章 光照
5.1 光照的組成
5.2 材質
5.3 頂點法線
5.4 光源
5.5 例程︰光照
5.6 一些附加例程
5.7 小結
第6章 紋理映射
6.1 紋理坐標
6.2 創建並啟用紋理
6.3 紋理過濾器
6.4 多級漸進紋理
6.4.1 多級漸進紋理過濾器
6.4.2 使用多級漸進紋理
6.5 尋址模式
6.6 例程︰紋理四邊形
6.7 小結
第7章 融合技術
7.1 融合方程
7.2 融合因子
7.3 透明度
7.3.1 Alpha通道
7.3.2 指定Alpha來源
7.4 用DirectX Texture Tool創建Alpha通道
7.5 例程︰透明效果
7.6 小結
第8章 模板
8.1 模板緩存的使用
8.1.1 模板緩存格式的查詢
8.1.2 模板測試
8.1.3 模板測試的控制
8.1.4 模板緩存的更新
8.1.5 模板寫掩碼
8.2 例程︰鏡面效果
8.2.1 成像中的數學問題
8.2.2 鏡面效果實現概述
8.2.3 代碼解析
8.3 例程︰Planer Shadows
8.3.1 平行光陰影
8.3.2 點光源產生的陰影
8.3.3 陰影矩陣
8.3.4 使用模板緩存防止二次融合
8.3.5 代碼解析
8.4 小結
第Ⅲ部分 Direct3D的應用
第9章 字體
第10章 網格(一)
第11章 網格(二)
第12章 設計一個靈活的Camera類
第13章 地形繪制基礎
第14章 粒子系統
第15章 拾取
第Ⅳ部分 著色器和效果
第16章 高級著色語言(HLSL)入門
第17章 頂點著色器入門
第18章 像素著色器入門
第19章 效果框架
附錄 Windows編程入門
參考文獻
 

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],熱切期待著讀者朋友的來信!
網路書店 類別 折扣 價格
  1. 新書
    87
    $240