DirectX 3D遊戲編程實用教程

DirectX 3D遊戲編程實用教程

《DirectX 3D遊戲編程實用教程》是2011年2月1日電子工業出版社出版的圖書,作者是鄭阿奇。

內容簡介

《DirectX 3D遊戲編程實用教程》內容簡介:DirectX是由微軟創建的多媒體編程接口,目前最流行的是DirectX 9.0。《DirectX 3D遊戲編程實用教程》介紹DirectX 9.0,內容為六篇共18章,包括3D遊戲編程基礎、3D遊戲圖形渲染、3D遊戲輸入控制、3D遊戲套用編程、3D遊戲音頻輸出和3D遊戲網路通信。包含3D遊戲編程的主要內容。《DirectX 3D遊戲編程實用教程》以遊戲編程基礎為先導;遊戲編程中每一個方法先原理後套用;實例的展開既突出重點,又考慮完整性。

讀者對象:《DirectX 3D遊戲編程實用教程》可作為大學本科和高職高專遊戲編程課程和遊戲編程培訓教材,也可供廣大遊戲編程用戶學習和參考。

圖書目錄

第一篇 3D遊戲編程基礎

第1章 Windows編程基礎 1

1.1 簡單的Windows應用程式 1

1.1.1 創建Windows應用程式項目 1

1.1.2 配置、生成及運行項目 6

1.2 Windows應用程式結構 8

1.2.1 數據類型 8

1.2.2 入口函式 9

1.2.3 註冊視窗類 10

1.2.4 創建並顯示視窗 11

1.3 Windows訊息機制 12

1.3.1 訊息佇列 13

1.3.2 訊息循環 14

1.3.3 訊息處理 14

1.4 匈牙利命名法 15

1.4.1 類型和常量的命名 16

1.4.2 變數的命名 16

1.4.3 函式和參數的命名 16

1.4.4 類的命名 17

1.5 本章小結 17

第2章 Direct3D編程基礎 18

2.1 DirectX概述 18

2.1.1 DirectX的發展過程 18

2.1.2 DirectX的組成部分 19

2.1.3 Direct3D與COM 20

2.1.4 Direct3D接口對象 21

2.2 Direct3D渲染流水線 22

2.2.1 渲染流水線 22

2.2.2 靈活頂點格式 23

2.2.3 D3D中的顏色 24

2.2.4 D3D中的圖元 25

2.3 Direct3D程式結構 27

2.3.1 簡單的Direct3D應用程式 28

2.3.2 創建Direct3D接口對象 32

2.3.3 獲取硬體設備信息 33

2.3.4 創建Direct3D設備接口 33

2.3.5 開始Direct3D圖形繪製 36

2.3.6 結束並清理對象資源 37

2.4 頂點快取 38

2.4.1 創建頂點快取 39

2.4.2 訪問頂點快取 40

2.4.3 使用頂點快取繪製圖形 41

2.4.4 頂點快取的繪製示例 42

2.5 索引快取 44

2.5.1 創建索引快取 44

2.5.2 訪問索引快取 45

2.5.3 使用索引快取繪製圖形 45

2.5.4 索引快取的繪製示例 46

2.6 Direct3D渲染狀態 49

2.6.1 剔除狀態 49

2.6.2 著色狀態 50

2.6.3 填充狀態 51

2.7 本章小結 52

第3章 基本的數學基礎 53

3.1 坐標空間 53

3.1.1 3D笛卡兒坐標系 53

3.1.2 多坐標系統 54

3.2 向量 56

3.2.1 向量的基本概念 56

3.2.2 向量的基本運算 57

3.2.3 D3D中的向量 59

3.3 矩陣 60

3.3.1 矩陣的基本概念 60

3.3.2 矩陣的基本運算 61

3.3.3 矩陣的基本變換 63

3.3.4 D3D中的矩陣 66

3.4 平面及射線 67

3.4.1 平面的定義 67

3.4.2 點與平面的關係 68

3.4.3 射線的定義 68

3.4.4 射線與平面的關係 69

3.5 空間坐標變換 69

3.5.1 世界變換 70

3.5.2 取景變換 71

3.5.3 投影變換 72

3.5.4 視口變換 73

3.6 空間坐標變換示例 74

3.7 本章小結 78

第二篇 3D遊戲圖形渲染

第4章 光照與材質 79

4.1 光照模型 79

4.1.1 環境光 79

4.1.2 漫反射光 80

4.1.3 鏡面反射光 80

4.2 光源類型 81

4.2.1 點光源 82

4.2.2 方向光 83

4.2.3 聚光燈 83

4.3 物體的材質 85

4.3.1 D3D材質 85

4.3.2 頂點法線 86

4.4 光照與材質示例 87

4.5 本章小結 92

第5章 紋理映射 93

5.1 紋理映射基礎 93

5.1.1 紋理坐標 93

5.1.2 創建紋理 95

5.1.3 啟用紋理 96

5.1.4 創建紋理示例 96

5.2 紋理過濾 99

5.2.1 最近點採樣過濾 99

5.2.2 線性紋理過濾 99

5.2.3 各向異性過濾 100

5.2.4 多級漸進過濾 100

5.2.5 紋理過濾示例 102

5.3 紋理定址 104

5.3.1 重複定址 104

5.3.2 鏡像定址 105

5.3.3 夾取定址 105

5.3.4 框線顏色定址 106

5.3.5 紋理定址示例 106

5.4 紋理包裝 108

5.4.1 紋理包裝原理 108

5.4.2 紋理包裝示例 110

5.5 本章小結 113

第6章 格線模型 114

6.1 格線模型基礎 114

6.1.1 格線的子集及屬性 115

6.1.2 格線的鄰接信息 116

6.1.3 格線的創建及繪製 117

6.1.4 創建及繪製格線示例 119

6.2 格線的最佳化及克隆 122

6.2.1 最佳化格線 122

6.2.2 克隆格線 123

6.3 X檔案格式分析 124

6.3.1 模板的定義 124

6.3.2 常用的模板類型 126

6.3.3 X檔案的結構 129

6.4 從X檔案創建格線 131

6.4.1 載入格線模型數據 131

6.4.2 獲取紋理和材質信息 132

6.4.3 繪製格線模型 133

6.4.4 讀取X檔案示例 134

6.5 創建漸進格線模型 137

6.5.1 ID3DXPMesh接口 138

6.5.2 創建並繪製漸進格線 138

6.5.3 創建漸進格線示例 140

6.6 D3D中的幾何體 142

6.7 本章小結 143

第7章 深度、融合及模板 145

7.1 深度測試 145

7.1.1 深度快取 145

7.1.2 深度測試 146

7.1.3 深度測試示例 147

7.2 融合技術 150

7.2.1 融合因子 151

7.2.2 Alpha來源 152

7.2.3 啟用Alpha融合 153

7.2.4 Alpha融合示例 153

7.3 模板技術 156

7.3.1 模板快取 156

7.3.2 模板測試 157

7.3.3 更新模板快取 158

7.4 鏡面效果 159

7.4.1 鏡面成像原理 159

7.4.2 實現鏡面效果 160

7.5 本章小結 163

第8章 HLSL語言基礎 164

8.1 HLSL概述 164

8.1.1 可程式管線 164

8.1.2 HLSL工作模型 165

8.2 簡單的HLSL程式 167

8.2.1 編寫HLSL代碼 168

8.2.2 HLSL關鍵字和保留字 169

8.2.3 HLSL預處理指令 169

8.2.4 輸入、輸出結構 170

8.2.5 HLSL入口函式 171

8.3 HLSL基本語法 171

8.3.1 HLSL中的變數 171

8.3.2 HLSL中的函式 177

8.4 D3D與HLSL互動 178

8.4.1 編譯著色器程式 179

8.4.2 獲取常量的句柄 180

8.4.3 設定常量的值 180

8.5 HLSL程式示例 181

8.6 本章小結 184

第9章 著色器與效果 185

9.1 頂點著色器 185

9.1.1 創建頂點聲明 185

9.1.2 使用頂點著色器 189

9.1.3 頂點著色器示例 191

9.2 漸變動畫效果 196

9.2.1 漸變動畫原理 196

9.2.2 實現漸變動畫 197

9.3 像素著色器 201

9.3.1 創建像素著色器 201

9.3.2 使用像素著色器 202

9.4 多重紋理混合 203

9.4.1 HLSL採樣器 203

9.4.2 多重紋理坐標 205

9.4.3 啟用多重紋理 205

9.4.4 多重紋理示例 206

9.5 效果框架 210

9.5.1 通道與手法 211

9.5.2 著色器內置對象 212

9.5.3 效果中的渲染狀態 212

9.5.4 創建效果框架 213

9.5.5 效果中常量的設定 214

9.5.6 使用效果框架 214

9.5.7 效果框架示例 216

9.6 本章小結 223

第三篇 3D遊戲輸入控制

第10章 DirectX輸入控制 224

10.1 DirectInput接口 224

10.2 使用DirectInput接口 225

10.2.1 DirectInput的初始化 226

10.2.2 創建設備接口對象 227

10.2.3 設定數據格式 227

10.2.4 設定協作級別 228

10.2.5 設定特殊屬性 229

10.2.6 獲取、輪詢設備 230

10.2.7 讀取設備數據 231

10.3 使用DirectInput處理鍵盤 232

10.3.1 初始化鍵盤設備接口 232

10.3.2 獲取輸入的鍵盤數據 233

10.3.3 鍵盤輸入控制示例 233

10.4 使用DirectInput處理滑鼠 237

10.4.1 在D3D中移動滑鼠 237

10.4.2 初始化滑鼠設備接口 238

10.4.3 獲取滑鼠的移動位置 238

10.4.4 滑鼠輸入控制示例 239

10.5 使用DirectInput處理遊戲桿 242

10.5.1 遊戲桿及其控制原理 242

10.5.2 初始化遊戲桿設備接口 242

10.5.3 讀取遊戲桿的狀態數據 244

10.5.4 遊戲桿輸入控制示例 245

10.6 本章小結 249

第四篇 3D遊戲套用編程

第11章 攝像機、地形及天空 250

11.1 虛擬攝像機 250

11.1.1 攝像機的屬性 250

11.1.2 攝像機的變換 253

11.1.3 攝像機的實現 257

11.1.4 攝像機套用示例 259

11.2 三維地形系統 262

11.2.1 地形高度圖 262

11.2.2 頂點的計算 264

11.2.3 索引的計算 265

11.2.4 地形的繪製 266

11.2.5 地形類的實現 267

11.2.6 地形繪製示例 268

11.3 球形天空頂 270

11.3.1 頂點的計算 270

11.3.2 索引的計算 272

11.3.3 天空的繪製 273

11.3.4 天空類的實現 274

11.3.5 天空繪製示例 274

11.4 本章小結 276

第12章 文字、拾取及碰撞檢測 277

12.1 字型及文本繪製 277

12.1.1 繪製2D文本 277

12.1.2 繪製3D文本 279

12.1.3 文本繪製示例 280

12.2 拾取技術 284

12.2.1 格線外接體 284

12.2.2 拾取技術原理 286

12.2.3 拾取套用示例 289

12.3 碰撞檢測 293

12.3.1 邊界球碰撞檢測 293

12.3.2 AABB碰撞檢測 295

12.3.3 OBB樹碰撞檢測 297

12.3.4 AABB碰撞檢測示例 298

12.4 本章小結 301

第13章 骨骼動畫 302

13.1 X檔案中的骨骼信息 303

13.1.1 骨骼蒙皮信息 303

13.1.2 骨骼層次信息 304

13.1.3 模型動畫信息 305

13.2 載入骨骼動畫數據 308

13.2.1 擴展結構體 309

13.2.2 載入X檔案 310

13.2.3 CAllocateHierarchy類 311

13.2.4 生成蒙皮格線 313

13.3 頂點混合技術 318

13.3.1 頂點混合原理 318

13.3.2 索引頂點混合 320

13.4 骨骼動畫的繪製 321

13.4.1 開啟頂點混合 322

13.4.2 更新骨骼矩陣 322

13.4.3 繪製骨骼動畫 323

13.5 骨骼動畫控制器 326

13.5.1 使用動畫控制器 326

13.5.2 平滑過渡動畫集 327

13.6 骨骼動畫示例 329

13.7 本章小結 334

第14章 實時陰影 336

14.1 平面陰影的原理 336

14.1.1 點光源平面陰影 337

14.1.2 方向光平面陰影 338

14.2 平面陰影的實現 338

14.2.1 計算陰影矩陣 338

14.2.2 平面陰影的繪製 339

14.2.3 平面陰影示例 340

14.3 體積陰影的原理 342

14.3.1 模型陰影體 342

14.3.2 陰影錐的計算 343

14.4 體積陰影的實現 345

14.4.1 體積陰影的繪製 348

14.4.2 體積陰影示例 351

14.5 陰影貼圖的原理 354

14.6 本章小結 354

第15章 廣告牌技術與粒子系統 356

15.1 廣告牌技術 356

15.1.1 廣告牌的原理 357

15.1.2 廣告牌的實現 357

15.1.3 廣告牌示例 359

15.2 粒子系統 362

15.2.1 粒子系統的原理 363

15.2.2 粒子系統的實現 363

15.2.3 粒子系統的更新 367

15.2.4 粒子系統的繪製 368

15.3 粒子系統示例 370

15.3.1 煙花示例 371

15.3.2 噴泉示例 374

15.4 本章小結 377

第16章 霧化及LOD地形 379

16.1 霧化效果 379

16.1.1 霧化混合因子 379

16.1.2 頂點霧化 381

16.1.3 像素霧化 382

16.1.4 範圍霧化 383

16.2 LOD地形原理 384

16.2.1 LOD四叉樹算法 385

16.2.2 LOD地形的實現 387

16.2.3 節點剔除原理 389

16.2.4 節點簡化準則 392

16.2.5 地形裂縫的處理 395

16.2.6 地形的更新及繪製 396

16.3 LOD地形示例 401

16.4 本章小結 404

第五篇 3D遊戲音頻輸出

第17章 Direct3D音頻控制 405

17.1 音頻檔案格式 405

17.1.1 音頻的基本概念 405

17.1.2 WAV音頻格式 406

17.1.3 MIDI音頻格式 407

17.1.4 MP3音頻格式 407

17.2 使用DirectSound處理音頻 408

17.2.1 DirectSound的結構 408

17.2.2 DirectSound的初始化 409

17.2.3 DirectSound音頻緩衝 410

17.2.4 向緩衝區中寫入數據 413

17.2.5 播放聲音及音頻控制 415

17.2.6 用DirectSound反饋信息 417

17.2.7 DirectSound套用示例 418

17.3 使用DirectMusic處理音頻 421

17.3.1 DirectMusic的結構 421

17.3.2 開始使用DirectMusic 422

17.3.3 載入、操作MIDI段 423

17.3.4 DirectMusic套用示例 427

17.4 使用DirectShow處理音頻 428

17.4.1 DirectShow的工作原理 429

17.4.2 DirectShow的初始化 430

17.4.3 載入流媒體數據 430

17.4.4 控制流媒體的播放 431

17.4.5 DirectShow套用示例 432

17.5 本章小結 434

第六篇 3D遊戲網路通信

第18章 Direct3D網路控制 435

18.1 了解網路互聯 435

18.1.1 網路會話模型 435

18.1.2 定址與通信協定 437

18.2 DirectPlay概述 438

18.2.1 創建和管理會話 438

18.2.2 DirectPlay傳輸協定 438

18.2.3 DirectPlay網路對象 439

18.2.4 玩家與遊戲大廳 441

18.3 客戶/服務會話 442

18.3.1 初始化網路對象 442

18.3.2 選擇服務提供者 444

18.3.3 使用DirectPlay地址 446

18.3.4 建立客戶/服務會話 447

18.3.5 傳送、接收數據 454

18.3.6 創建並使用分組 457

18.3.7 結束及終止會話 458

18.4 遊戲大廳的支持 459

18.4.1 遊戲大廳的結構 459

18.4.2 實現遊戲大廳客戶端 460

18.4.3 實現支持大廳的程式 462

18.5 客戶/服務會話示例 463

18.5.1 創建服務端程式 463

18.5.2 創建客戶端程式 470

18.6 本章小結 473

附 錄

附錄A DirectX9 SDK的安裝與配置 474

A.1 安裝DirectX 474

A.2 配置開發環境 475

A.3 瀏覽DirectX示例 476

附錄B DXUT程式框架介紹 478

B.1 創建DXUT項目 478

B.2 DXUT框架的初始化 480

B.3 創建應用程式視窗 481

B.4 創建Direct3D設備 482

B.5 DXUT的事件處理 483

B.5.1 框架事件 483

B.5.2 設備事件 484

B.5.3 訊息事件 485

B.6 DXUT的錯誤處理 486

相關詞條

相關搜尋

熱門詞條

聯絡我們