本書內(nèi)容涵蓋面廣,講解深入淺出,且示例豐富。書中主要介紹如何使用DirectX 開發(fā)交互式3D圖形程序,重點是游戲開發(fā)。全書首先介紹了必要的入門知識,如開發(fā)平臺、圖形學基礎、數(shù)學工具,然后講解了相關的3D概念。其他主題幾乎涵蓋了Direct3D中的所有基本運算,例如圖元的繪制、光照、紋理、alpha融合、模板,以及如何使用Direct3D實現(xiàn)游戲所需的技術(shù)。 本書可供從事3D游戲程序設計、可視化系統(tǒng)設計或其他圖形應用程序開發(fā)的開發(fā)人員和大中專院校學生參考,也極適合各種游戲開發(fā)培訓機構(gòu)用作Direct3D編程的培訓教程。目 錄
第1章 關于Windows 1
1.1 關于Windows 1
1.2 匈牙利命名法 2
1.3 Windows的一般概念 3
1.4 Windows中的消息處理 4
1.5 Hello World——Windows風格 6
1.6 對窗口幾何參數(shù)的操作 17
1.7 重要的窗口消息 19
1.8 類的封裝 23
1.9 COM:組件對象模型 30
1.10 小結(jié) 32
第2章 DirectX 10入門 33
2.1 什么是DirectX 33
2.2 安裝 33
2.3 VC++的環(huán)境設置 34
2.4 DirectDraw發(fā)展史 36
2.5 Direct3D簡介 37
2.5.1 2D圖形學基礎 38
2.5.2 紋理 41
2.5.3 用cGraphicsLayer啟動 Direct3D 50
2.5.4 Direct3D的初始化 56
2.5.5 關閉Direct3D 63
2.6 例程:Direct3D Sample 63
2.7 小結(jié) 65
第3章 輸入與音效 67
3.1 DirectInput 67
3.1.1 設備 68
3.1.2 應用程序的焦點和設備 73
3.1.3 DirectInput對象 74
3.2 音效 90
3.2.1 音效的本質(zhì) 90
3.2.2 DirectSound的概念 91
3.3 加載WAV文件 98
3.4 應用程序:DirectSound Sample 118
3.5 小結(jié) 123
第4章 3D數(shù)學基礎 125
4.1 點 125
4.1.1 point3結(jié)構(gòu) 128
4.1.2 基本的point3函數(shù) 129
4.1.3 point3運算符 130
4.2 多邊形 137
4.3 三角形 140
4.4 平面 142
4.4.1 確定與平面的位置關系 145
4.4.2 背面剔除 148
4.4.3 線段裁剪 149
4.4.4 裁剪多邊形 150
4.5 物體表示法 154
4.6 變換 156
4.6.1 矩陣 157
4.6.2 外接球的碰撞檢測 176
4.7 光照 178
4.7.1 顏色的表示 179
4.7.2 光照模型 181
4.7.3 鏡面反射 183
4.7.4 光源類型 184
4.7.5 明暗模型 186
4.8 BSP樹 189
4.8.1 BSP樹相關理論 190
4.8.2 BSP樹的構(gòu)建 190
4.8.3 BSP樹相關算法 195
4.8.4 BSP樹相關代碼 197
4.9 小結(jié) 209
第5章 人工智能 211
5.1 起點 212
5.2 操控——基本算法 212
5.2.1 追趕 213
5.2.2 躲避 213
5.2.3 基于模式的AI 214
5.3 操控——高級算法 215
5.3.1 勢函數(shù) 215
5.3.2 路徑跟蹤 219
5.4 動機 230
5.4.1 不確定有限自動機 230
5.4.2 遺傳算法 232
5.4.3 基于規(guī)則的AI 234
5.4.4 神經(jīng)網(wǎng)絡 235
5.4.5 應用程序:NeutralNet 240
5.5 系統(tǒng)擴展 253
第6章 基于UDP的多玩家Internet 網(wǎng)絡游戲 255
6.1 術(shù)語 255
6.1.1 字節(jié)序 255
6.1.2 網(wǎng)絡模型 257
6.1.3 協(xié)議 258
6.1.4 包 258
6.2 實現(xiàn)1:MTUDP 259
6.2.1 設計思路 259
6.2.2 要注意的事情 259
6.2.3 互斥 261
6.2.4 線程、監(jiān)視器和try/throw/catch結(jié)構(gòu)問題 263
6.2.5 早年的MTUDP 264
6.3 實現(xiàn)2:流暢的網(wǎng)絡游戲 294
6.3.1 地理和時域獨立 294
6.3.2 時間就是一切 295
6.3.3 仔細挑選 296
6.3.4 預測和推測 296
6.4 小結(jié) 298
第7章 Direct3D基礎 299
7.1 D3D簡介 299
7.2 開始使用Direct3D 300
7.2.1 步驟1:創(chuàng)建ID3D10Device 對象和交換鏈 300
7.2.2 步驟2:創(chuàng)建深度-模板 緩存 302
7.2.3 步驟3:創(chuàng)建視區(qū) 309
7.2.4 步驟4:創(chuàng)建默認著色器 310
7.2.5 關于深度緩存的更多討論 323
7.2.6 模板緩存 326
7.2.7 頂點緩存 326
7.3 用著色器進行光照計算 329
7.4 應用程序:D3D View 331
7.4.1 .o3d格式 331
7.4.2 cModel類 332
第8章 高級3D技術(shù) 343
8.1 使用層次化對象的動畫處理 343
8.1.1 正向運動學 345
8.1.2 反向運動學 347
8.1.3 應用:InvKim 350
8.2 帶參數(shù)的曲線和曲面 356
8.2.1 貝塞爾曲線和曲面 356
8.2.2 求基礎矩陣 361
8.2.3 計算貝塞爾曲線 362
8.2.4 前向差分 363
8.2.5 繪制曲線 367
8.2.6 繪制曲面 368
8.2.7 應用程序:茶壺 369
8.2.8 B樣條曲線 377
8.3 細分曲面 380
8.3.1 細分要素 381
8.3.2 改進的蝴蝶法細分方案 383
8.3.3 應用程序:SubDiv 387
8.4 漸進網(wǎng)格 401
8.4.1 漸進網(wǎng)格基礎知識 402
8.4.2 選擇邊 403
8.4.3 實現(xiàn)漸進網(wǎng)格渲染器 406
8.5 輻射度 407
8.5.1 輻射度基本原理 408
8.5.2 漸進輻射度 410
8.5.3 形狀因子 411
8.5.4 應用程序:Radiosity 412
8.6 小結(jié) 416
第9章 Direct3D高級主題 417
9.1 alpha融合 417
9.1.1 alpha融合方程 417
9.1.2 深度排序的說明 418
9.1.3 激活alpha融合 418
9.2 紋理貼圖入門 423
9.2.1 基本原則 423
9.2.2 仿射與透視貼圖 424
9.2.3 紋理尋址模式 425
9.2.4 紋理外包 427
9.2.5 紋理走樣 428
9.2.6 MIP多級紋理鏈 429
9.2.7 紋理過濾 430
9.2.8 Direct3D中的紋理 433
9.2.9 加載紋理 434
9.2.10 激活紋理 437
9.3 高級紋理貼圖 440
9.3.1 紋理數(shù)組 440
9.3.2 多層紋理效果 440
9.3.3 光照貼圖(或黑暗貼圖) 441
9.3.4 環(huán)境貼圖 443
9.3.5 鏡面貼圖 448
9.3.6 細節(jié)貼圖 448
9.3.7 應用程序:Detail 450
9.3.8 發(fā)光貼圖 458
9.3.9 光澤度貼圖 459
9.3.10 其他效果 460
9.3.11 應用程序:MultiTex 460
9.4 使用模板緩存 480
9.4.1 透支計數(shù)器 481
9.4.2 溶解和擦除 481
9.5 小結(jié) 482
第10章 場景管理 483
10.1 場景管理問題和解決方案 483
10.1.1 四叉樹/八叉樹 484
10.1.2 入口渲染 485
10.1.3 入口效果 494
10.1.4 入口生成 498
10.1.5 預先計算的入口渲染 (用PVS) 499
10.2 應用程序:Mobots Attack! 500
10.2.1 對象間通信 501
10.2.2 網(wǎng)絡通信 505
10.2.3 代碼結(jié)構(gòu) 508
10.3 結(jié)束感想 508
附錄 STL入門 509
A.1 模板 509
A.2 容器 510
A.3 迭代器 512
A.4 仿函數(shù) 513
[圖書資源]