基本介紹
- 中文名:網路遊戲客戶端編程
- 作者:信息產業部軟體與積體電路促進中心
- 出版社:電子工業出版社
- 出版時間:2007年
- 定價:59.8 元
- 開本:16 開
- ISBN:9787121038556
內容簡介,圖書目錄,
內容簡介
《網路遊戲客戶端編程》全書的內容可以分為三個部分:
第一部分為基礎部分,主要介紹3D圖形編程的基礎知識,包括計算機圖形學基礎、Direct3D圖形開發包基本API學習、Directlnput開發包API學習、DirectAudio、DirectShow開發包API學習。讀者學習本部分後能熟練使用DirectX開發包進行3D圖形編程。
第二部分為提升部分,主要介紹如何靈活套用Direct3D的基本知識點,實現遊戲中的某些特殊效果,同時深入學習HLSL的知識,適應顯示卡技術的高速發展。
第三部分:算法階段,對遊戲中的一些常用的算法進行研究,包括物理模擬、人工智慧、碰撞檢測以及場景劃分,讀者學後能熟悉遊戲中的常用算法,對引擎的底層部分也能有所了解。
圖書目錄
第1章 計算機圖形學基礎 1
1.1 3D圖形學概述 2
1.1.1 計算機圖形學基礎 2
1.1.2 計算機圖形顯示技術 4
1.1.3 計算機圖形處理器 4
1.1.4 顯示卡發展史 6
1.2 向量 11
1.2.1 向量的概念 11
1.2.2 坐標系 12
1.2.3 向量的運算 13
1.3 矩陣 16
1.3.1 矩陣的概念 16
1.3.2 矩陣的運算 17
1.3.3 齊次坐標 20
1.4 圖形幾何變換 20
1.4.1 圖形幾何變換的意義 20
1.4.2 二維圖形的幾何變換 21
1.4.3 三維圖形的幾何變換 23
1.5 四元數 25
1.5.1 複數理論 25
1.5.2 四元數的運算 26
1.5.3 四元數在圖形學中的套用 28
本章小結 30
自測習題 31
課後作業 31
第2章 DirectX基礎 33
2.1 DirectX介紹 34
2.1.1 DirectX及其歷史 34
2.1.2 DirectX開發庫 37
2.1.3 DirectX編程約定和命名規範 37
2.1.4 DirectX環境配置 40
2.2 D3D相關概念 42
2.2.1 HAL和COM 42
2.2.2 D3D中的基礎概念 46
2.2.3 空間的概念 47
2.3 T&L渲染流水線 48
2.3.1 T&L的概念 48
2.3.2 空間轉換 49
2.3.3 照明與投影 50
2.3.4 投影后的處理 51
2.3.5 渲染中的數據存儲 53
2.4 D3D中的圖元 54
2.4.1 D3D中圖元(Primitive)的概念 54
2.4.2 圖元類型 55
2.5 D3D程式基本框架 57
2.5.1 初始化Direct3D程式 58
2.5.2 圖形顯示 63
本章小結 65
自測習題 65
課後作業 66
第3章 繪製基本圖形 67
3.1 繪製基本圖形 68
3.1.1 繪製基本圖形的完整代碼 68
3.1.2 繪製圖形的代碼分析 72
3.2 索引緩衝繪製矩形 76
3.2.1 使用索引緩衝(Index Buffer)的意義 76
3.2.2 在D3D中如何使用索引緩衝 76
3.3 D3D中的圖形學 78
3.3.1 D3D中的圖形學基礎 78
3.3.2 D3D中的平面 83
3.3.3 D3D中的射線 86
3.3.4 D3D中的圖形變換 87
本章小結 89
自測習題 89
課後作業 90
第4章 實現基本光照與紋理 91
4.1 基本紋理繪製 92
4.1.1 紋理的概念 92
4.1.2 D3D的紋理繪製 94
4.2 特殊紋理渲染 99
4.2.1 紋理過濾(Texture Filtering)與採樣 99
4.2.2 紋理定址(Texture Address) 103
4.2.3 紋理包裝(Texture Wrapping)與壓縮 106
4.3 基本光照模型與表面材質 109
4.3.1 光照模型 109
4.3.2 光源類型 111
4.3.3 光源的屬性 112
4.3.4 物體表面材質 114
4.3.5 在Direct3D中實現光照 115
本章小結 117
自測習題 118
課後作業 118
第5章 使用格線模型 119
5.1 使用格線建立基本模型 120
5.1.1 ID3DXMesh接口 120
5.1.2 子集和屬性緩衝 121
5.1.3 格線渲染 122
5.1.4 最佳化格線 122
5.1.5 屬性表 123
5.1.6 鄰接信息 124
5.1.7 克隆格線 125
5.1.8 創建Mesh(D3DXCreateMeshFVF) 126
5.1.9 創建並渲染Mesh 126
5.2 遊戲地形格線 128
5.2.1 高度圖的概念 129
5.2.2 高度圖的使用 130
5.3 使用模型 134
5.3.1 X檔案格式 134
5.3.2 輸出.X檔案格式 137
5.3.3 在Direct3D程式中載入X檔案 139
5.3.4 三維模型動畫 141
5.3.5 骨骼動畫詳解 143
本章小結 148
自測習題 149
課後作業 149
第6章 實現基本遊戲特效 151
6.1 基本渲染屬性 152
6.1.1 深度緩衝 152
6.1.2 Alpha混合 153
6.1.3 Alpha測試 156
6.1.4 多邊形填充和渲染 157
6.1.5 圖形反鋸齒 158
6.2 多紋理混合 160
6.2.1 多紋理的概念 160
6.2.2 多重紋理的使用 161
6.3 霧化效果 163
6.3.1 D3D中的霧化模型 163
6.3.2 實現霧化效果 165
6.4 2D文字和圖形 167
6.4.1 D3D中使用2D文字 167
6.4.2 D3D中使用二維圖形 169
6.5 公告板技術 170
6.5.1 公告板技術原理 170
6.5.2 公告板的程式實現 171
6.6 粒子系統 172
6.6.1 粒子系統的概念 172
6.6.2 粒子系統的實現 173
本章小結 178
自測習題 178
課後作業 178
第7章 實現遊戲實時陰影 179
7.1 模板技術 180
7.1.1 模板的概念 180
7.1.2 模板的程式實現 181
7.1.3 模板的簡單套用 183
7.2 實時陰影技術 188
7.2.1 陰影體 188
7.2.2 實時陰影的技術實現 192
本章小結 199
自測習題 200
課後作業 200
第8章 實現遊戲控制 201
8.1 遊戲控制概述 202
8.1.1 傳統的控制 202
8.1.2 DirectInput 203
8.2 DirectX鍵盤控制 207
8.2.1 初始化鍵盤對象 207
8.2.2 設定鍵盤設備狀態 208
8.2.3 獲取鍵盤輸入 209
8.2.4 釋放設備 212
8.3 DirectX滑鼠控制 212
8.3.1 使用滑鼠設備的流程 212
8.3.2 使用滑鼠控制 217
8.4 遊戲控制綜合套用 221
8.4.1 遊戲角色控制 221
8.4.2 攝像機控制 226
本章小結 228
自測習題 229
課後作業 229
第9章 實現遊戲音樂與音效 231
9.1 DirectMusic對音頻檔案的支持 232
9.1.1 遊戲音樂音效概述 232
9.1.2 DirectMusic的特點 233
9.1.3 DirectMusic的編程步驟 234
9.2 DirectSound對音頻檔案的支持 238
9.2.1 DirectSound的特點 238
9.2.2 DirectSound的編程步驟 239
9.3 DirectShow對流媒體的支持 246
9.3.1 DirectShow的工作原理 246
9.3.2 DirectShow的編程步驟 250
9.3.3 DirectShow播放AVI動畫 252
9.4 3D音效的實現 253
9.4.1 3D音效模型 254
9.4.2 3D音效實現 255
本章小結 256
自測習題 256
課後作業 257
第10章 建立基本遊戲場景 259
10.1 CGameApp 260
10.2 CMath 262
10.3 CBoundingBox 263
10.4 CCamera 265
10.5 CMesh 267
10.6 CMP3 268
10.7 CParticleSystem 269
10.8 CShadowVolume 272
10.9 CSkyBox 273
10.10 CTerrain 274
10.11 CUnit 275
10.12 CSkinMesh 277
本章小結 282
第11章 HLSL語言基礎 283
11.1 HLSL基本概念 284
11.1.1 著色器和高級語言 284
11.1.2 VertexShader和PixelShader 285
11.1.3 HLSL工作模型 286
11.1.4 VertexShader和PixelShader的版本 287
11.1.5 Technique和Pass 288
11.2 HLSL中的變數 288
11.2.1 變數類型 289
11.2.2 變數類型的轉換 292
11.2.3 變數的其他修飾用關鍵字 293
11.2.4 變數重組 294
11.3 HLSL中的基礎語法 295
11.3.1 HLSL的函式 295
11.3.2 HLSL中的內置函式 296
11.3.3 數學表達式 296
11.3.4 依賴於不同版本的變數類型 297
11.3.5 HLSL關鍵字和保留字表 298
本章小結 299
自測習題 299
課後作業 299
本章附錄函式定義表 299
第12章 Direct3D與HLSL 309
12.1 HLSL編碼入門 310
12.1.1 一個簡單的示例 310
12.1.2 獲取圖形硬體所支持的Shader版本 311
12.1.3 編譯HLSL代碼 313
12.1.4 定義technique和pass 316
12.1.5 修改渲染狀態 316
12.2 HLSL中的語義 317
12.2.1 語義的概念 317
12.2.2 Direct3D中的FVF與多流 318
12.2.3 語義的套用 319
12.2.4 輸入/輸出語義的其他相關內容 320
12.2.5 語義的作用 322
12.2.6 使用語義的原因 322
12.3 HLSL中的釋義 323
12.3.1 釋義的概念 323
12.3.2 獲取釋義信息 325
本章小結 326
自測習題 327
課後作業 327
第13章 HLSL基本套用 329
13.1 D3D與HLSL的互動 330
13.1.1 在D3D中調用HLSL代碼 330
13.1.2 與變數互動的方法 331
13.1.3 獲取變數的所有信息 335
13.1.4 枚舉出代碼中的所有變數 338
13.1.5 獲取Technqiue和Pass的信息 340
13.2 基本渲染效果 344
13.2.1 頂點變換 344
13.2.2 頂點顏色 348
13.2.3 使用紋理 349
13.2.4 光照效果 351
本章小結 359
自測習題 359
課後作業 359
第14章 尋路算法 361
14.1 圖論基礎 362
14.1.1 圖的定義 362
14.1.2 圖的表示結構 363
14.2 基本尋路算法 365
14.2.1 深度優先算法 365
14.2.2 廣度優先算法 370
14.3 A*算法 376
14.3.1 A*算法的思想 376
14.3.2 A*算法的邏輯 377
14.3.3 A*算法的實現 379
本章小結 391
自測習題 392
課後作業 392
第15章 人工智慧 393
15.1 人工智慧概述 394
15.1.1 人工智慧的概念及其套用 394
15.1.2 遊戲中的人工智慧 396
15.1.3 遊戲中人工智慧的系統結構 398
15.2 有限狀態機 399
15.2.1 電腦角色的行為 399
15.2.2 有限狀態機 401
15.2.3 模糊狀態機 403
15.3 博弈論 403
15.3.1 博弈問題概述 403
15.3.2 完全信息靜態博弈 404
15.3.3 完全信息動態博弈 406
15.3.4 不完全信息靜態博弈 407
15.3.5 不完全信息動態博弈 408
15.3.6 博弈論的套用 409
本章小結 416
自測習題 416
課後作業 417
第16章 物理模擬 419
16.1 相關物理概念 420
16.1.1 基本物理單位 420
16.1.2 主要物理單位 422
16.2 物理環境模擬 427
16.2.1 動量守恆與傳遞 427
16.2.2 模擬重力場中的運動 429
16.2.3 模擬摩擦力 432
本章小結 435
自測習題 436
課後作業 436
第17章 碰撞檢測 437
17.1 2D環境下的碰撞 438
17.1.1 簡單的平面碰撞反應 438
17.1.2 2D物體間的精確碰撞回響 441
17.2 3D環境下的碰撞 448
17.2.1 碰撞檢測概述 448
17.2.2 包圍球碰撞檢測 448
17.2.3 AABB算法 450
本章小結 451
自測習題 452
課後作業 452
第18章 LOD地形渲染 453
18.1 地表的四叉樹分割與數據存儲 454
18.1.1 四叉樹概念及與LOD的關係 454
18.1.2 四叉樹的地表分割原理 454
18.1.3 四叉樹分割數據的存儲 454
18.1.4 四叉樹的實現 455
18.2 平截頭體對場景的分割 456
18.2.1 平截頭體的剔除原理 456
18.2.2 邊界球體的剔除原理 456
18.2.3 平截頭體的實現 458
18.2.4 四叉樹的剔除 458
18.3 視點距離相關的結點評價 462
18.3.1 結點評價係數與結點分割的LOD等級 462
18.3.2 LOD的實現 463
18.4 地形結點渲染格線的生成 464
18.5 LOD地形渲染實現 466
本章小結 469
自測習題 469
課後作業 470