WINDOWS遊戲編程之從零開始

2013年毛星雲所著書籍

《Windows遊戲編程之從零開始》是清華大學出版社於2013年出版的書籍,作者是毛星雲

內容簡介


1. 如果你的編程經驗為零:
毫無編程經驗的朋友,請先閱讀介紹C++編程語言的相關書籍,再來延續我們的夢想,閱讀這本書。學習C++推薦書目: C++ Primer和C++ Primer Plus。
2. 如果你有C++編程經驗但沒有接觸過Windows 編程:
C++編程經驗但毫無Windows編程經驗的朋友,可以從頭到尾順暢的閱讀這本書。因為這本書最準確的定位就是有一點C++編程經驗之後從零開始掌握Windows遊戲編程
3. 如果你有Windows 編程經驗,但不熟悉GDI
有Windows編程經驗但不熟悉GDI的朋友,推薦適當閱讀第一章之後,從第4章開始您的征程。
4. 如果你想了解Windows GDI遊戲繪圖技巧:
想了解Windows GDI遊戲繪圖技巧的朋友,請閱讀第5章。
5. 如果你想了解Windows遊戲動畫技巧:
想了解Windows遊戲動畫技巧的朋友,第6章會滿足你的好奇心。
6. 如果你想了解Windows小遊戲鍵盤滑鼠編程的相關知識:
需要了解Windows中小遊戲對鍵盤滑鼠編程相關知識的朋友,第7章會給你答案。
7. 如果你想看看Windows GDI如何寫出好玩的程序:
想看看Windows GDI可以弄出哪些好玩的玩意兒的朋友,第8章會給你驚喜。
8. 如果你想了解一個GDI小遊戲完整的開發過程:
想了解一個結構完整的小遊戲的開發過程的朋友們,第9章會超出你們的期待。
9. 如果你已經準備好迎接挑戰,開始學習DirectX遊戲編程:
有一定Windows編程經驗,並且了解GDI編程,想開始DirectX 3D遊戲編程學習的朋友,請從第10章開始閱讀。這本書從第10章往後的內容組織起來是一個系統的DirectX遊戲編程教材,其實可以單獨成書的。

圖書目錄


序 篇 逐夢·遊戲開發夢想的重量
第1章 高瞻遠矚——遊戲開發面面觀............................................................................... 3
1.1 逐夢——夢想讓我們不孤單................................................................................ 4
1.1.1 現在的努力,就是為了證明小時候吹過的牛................................................ 4
1.1.2 為夢想,為國產遊戲的未來,請把這本書讀下去.......................................... 4
1.2 遊戲產業的黎明................................................................................................. 5
1.3 遊戲產業的分類——六大遊戲市場....................................................................... 6
1.3.1 3A級遊戲開發領域................................................................................... 6
1.3.2 社交和休閒遊戲開發領域.......................................................................... 8
1.3.3 移動遊戲開發領域.................................................................................... 9
1.3.4 功能型遊戲開發領域................................................................................. 9
1.3.5 學術型遊戲開發領域............................................................................... 10
1.3.6 獨立型遊戲開發領域............................................................................... 10
1.4 遊戲平台與遊戲開發編程語言的認知.................................................................. 11
1.5 對遊戲類型的認知............................................................................................ 12
1.6 遊戲開發中圖形API的概念.............................................................................. 14
1.7 遊戲編程學習路線總結..................................................................................... 15
1.8 章節小憩......................................................................................................... 16
第一篇 起航 · 夯實遊戲程序之根
第2章 開鋒你的絕世名刃—— Visual Studio開發環境的安裝、配置............................... 19
2.1 Visual Studio、VC++和C++的那些事兒............................................................ 20
2.2 Visual Studio 2010的下載、安裝與配置............................................................ 21
2.2.1 下載VisualStudio 2010......................................................................... 21
2.2.2 安裝VisualStudio 2010......................................................................... 22
2.2.3 初次配置VisualStudio 2010................................................................... 25
2.2.4 Visual Studio 2010常用設置介紹............................................................ 26
2.3 Visual Studio 2010使用指南............................................................................ 27
2.3.1 集成開發環境簡介.................................................................................. 27
2.3.2 Visual Studio界面概述........................................................................... 28
2.3.3 工具欄選項............................................................................................ 29
2.4 百科全書——幫助文檔與MSDN....................................................................... 30
2.4.1 MSDN的安裝........................................................................................ 31
2.4.2 離線查看MSDN的方法.......................................................................... 33
2.4.3 使用MSDN幫助文檔.............................................................................. 34
2.5 Coding路上不孤單——強大的編程助手Visual AssistX...................................... 34
2.6 長征第一步——第一個程序的創建與編寫........................................................... 36
2.6.1 關於項目與解決方案............................................................................... 36
2.6.2 第一個程序的創建與編寫......................................................................... 37
2.6.3 Visual Studio文件類型分析.................................................................... 41
2.7 章節小憩......................................................................................................... 42
第3章 啟程——Windows編程基礎................................................................................ 43
3.1 高瞻遠矚——Windows編程體系與遊戲編程....................................................... 44
3.2 理解兩個術語——API與SDK........................................................................... 45
3.2.1 何為API................................................................................................ 45
3.2.2 什麼是SDK........................................................................................... 46
3.3 Windows程序的“心臟”——WinMain函數...................................................... 46
3.3.1 WinMain函數......................................................................................... 46
3.3.2 MessageBox函數.................................................................................. 49
3.3.3 PlaySound函數..................................................................................... 51
3.3.4 示常式序Firstblood!............................................................................ 52
3.4 Windows程序的“外貌”——窗口.................................................................... 55
3.5 Winodows資源的“身份證”——句柄.............................................................. 55
3.6 Windows程序的“郵局”——消息與消息隊列................................................... 56
3.6.1 消息的表示形式——MSG結構體............................................................. 56
3.6.2 關於消息隊列......................................................................................... 58
3.7 步步為營——窗口創建四步曲........................................................................... 58
3.7.1 窗口類的設計......................................................................................... 58
3.7.2 窗口類的註冊......................................................................................... 63
3.7.3 窗口的正式創建...................................................................................... 64
3.7.4 窗口的顯示和更新.................................................................................. 66
3.8 各有千秋——兩套消息循環體系........................................................................ 68
3.8.1 以GetMessage為核心的消息循環體系.................................................... 69
3.8.2 以PeekMessage為核心的消息循環體系.................................................. 71
3.9 Windows程序的“中樞神經”——窗口過程函數................................................ 73
3.10 做好善後——窗口類的註銷............................................................................. 75
3.11 牛刀小試——一個完整的窗口程序的誕生......................................................... 76
3.12 小不忍則亂大謀——關於命名規範................................................................... 80
3.13 章節小憩....................................................................................................... 82
第二篇 初探 · GDI 2D遊戲編程
第4章 入門心法——Windows遊戲圖形基礎.................................................................. 85
4.1 Windows圖形設備介面(GDI)........................................................................ 86
4.1.1 GDI的初印象......................................................................................... 86
4.1.2 用GDI寫遊戲的認知.............................................................................. 86
4.1.3 關於GDI+............................................................................................. 87
4.1.4 GDI的特點............................................................................................ 87
4.1.5 GDI中的基本圖形.................................................................................. 88
4.1.6 GDI的函數分類...................................................................................... 89
4.2 設備環境(DC)............................................................................................. 90
4.2.1 設備環境的基本概念............................................................................... 90
4.2.2 獲取設備環境句柄(HDC)的兩種方式..................................................... 91
4.3 Windows屏幕區域相關概念闡述....................................................................... 94
4.3.1 屏幕區、窗口區與客戶區......................................................................... 94
4.3.2 坐標點與坐標變換.................................................................................. 94
4.4 寫一個GDI程序通用框架................................................................................. 95
4.5 GDI基本幾何繪圖.......................................................................................... 100
4.5.1 創建畫筆.............................................................................................. 100
4.5.2 創建畫刷.............................................................................................. 101
4.5.3 圖形對象的選擇.................................................................................... 102
4.5.4 繪製圖形和線條.................................................................................... 103
4.6 遊戲隨機數系統初步....................................................................................... 105
4.6.1 遊戲中的隨機系統概述.......................................................................... 105
4.6.2 隨機系統初步....................................................................................... 106
4.6.3 幾種隨機數的簡單演演算法.......................................................................... 108
4.6.4 產生一定範圍內隨機數的通用演演算法公式................................................... 109
4.6.5 總結.................................................................................................... 109
4.6.6 示常式序GDIdemo1............................................................................. 110
4.7 文字的輸出.................................................................................................... 113
4.7.1 最常用文字輸出函數TextOut................................................................. 114
4.7.2 進階文字輸出函數................................................................................. 114
4.7.3 設置文字顏色....................................................................................... 115
4.7.4 設置文字背景透明................................................................................. 116
4.7.5 字體的創建.......................................................................................... 116
4.7.6 總結.................................................................................................... 117
4.7.7 示常式序GDIdemo2............................................................................. 119
4.8 點陣圖繪製基礎................................................................................................ 120
4.8.1 點陣圖繪製四步曲.................................................................................... 121
4.8.2 示常式序GDIdemo3............................................................................. 125
4.9 消除閃爍:緩衝顯示技術................................................................................ 127
4.10 章節小憩..................................................................................................... 128
第5章 遮羞的藝術——Windows遊戲繪圖技巧............................................................ 129
5.1 透明貼圖的兩套體系....................................................................................... 130
5.2 透明遮罩法.................................................................................................... 130
5.2.1 具體實現細節....................................................................................... 131
5.2.2 示常式序GDIdemo4............................................................................. 134
5.3 透明色彩法.................................................................................................... 137
5.3.1 具體實現細節....................................................................................... 137
5.3.2 示常式序GDIdemo5............................................................................. 139
5.4 自己動手處理圖片素材................................................................................... 141
5.4.1 遊戲素材的來源.................................................................................... 142
5.4.2 Photoshop圖像處理軟體...................................................................... 142
5.4.3 處理遊戲素材圖片................................................................................. 143
5.5 章節小憩....................................................................................................... 150
第6章 光與影的交匯——Windows遊戲動畫技術......................................................... 151
6.1 定時器動畫顯示............................................................................................. 152
6.1.1 創建定時器.......................................................................................... 152
6.1.2 WM_TIMER消息響應............................................................................ 153
6.1.3 刪除定時器.......................................................................................... 154
6.1.4 示常式序GDIdemo6............................................................................. 155
6.2 遊戲循環動畫顯示.......................................................................................... 161
6.3 透明動畫....................................................................................................... 165
6.4 排序貼圖....................................................................................................... 169
6.5 章節小憩....................................................................................................... 175
第7章 做遊戲的主人——Windows遊戲輸入消息處理.................................................. 176
7.1 Windows鍵盤消息處理.................................................................................. 177
7.1.1 虛擬鍵碼與鍵盤消息............................................................................. 177
7.1.2 鍵盤消息處理....................................................................................... 181
7.1.3 示常式序GDIdemo10........................................................................... 182
7.2 Windows滑鼠消息處理.................................................................................. 187
7.2.1 滑鼠消息的處理方式............................................................................. 187
7.2.2 滑鼠相關常用函數講解.......................................................................... 189
7.3 章節小憩....................................................................................................... 199
第8章 玄妙的物理——物理建模與粒子系統初步.......................................................... 201
8.1 基礎物理建模初步.......................................................................................... 202
8.1.1 勻速與加速運動模擬............................................................................. 202
8.1.2 重力系統模擬....................................................................................... 207
8.1.3 摩擦力系統模擬.................................................................................... 210
8.2 粒子系統初步................................................................................................ 214
8.2.1 基本概念.............................................................................................. 214
8.2.2 雪花飛舞示常式序................................................................................. 215
8.2.3 星光綻放示常式序................................................................................. 219
8.3 章節小憩....................................................................................................... 224
第9章 夢的初現——開發回合制遊戲《勇者斗惡龍》................................................... 225
9.1 設計遊戲登場角色.......................................................................................... 226
9.2 設計主角角色技能.......................................................................................... 228
9.2.1 “無敵斬”角色技能設計....................................................................... 228
9.2.2 “烈火劍法”角色技能設計.................................................................... 228
9.2.3 “氣療術”角色技能設計....................................................................... 229
9.2.4 “恩賜解脫”角色技能設計.................................................................... 229
9.3 設計反派角色技能.......................................................................................... 230
9.3.1 人工智慧技術一瞥................................................................................. 230
9.3.2 反派人物AI的設計............................................................................... 232
9.3.3 “幽冥鬼火”反派技能設計.................................................................... 233
9.3.4 “嗜血咒”反派技能設計....................................................................... 233
9.3.5 “致命一擊”反派技能設計.................................................................... 234
9.3.6 “使用梅肯斯姆”反派技能設計............................................................. 234
9.4 書寫遊戲程序實現代碼................................................................................... 235
9.4.1 遊戲資源的初始化................................................................................. 235
9.4.2 功能函數的實現.................................................................................... 238
9.4.3 遊戲主體部分的實現............................................................................. 240
9.4.4 遊戲窗口過程函數的實現....................................................................... 244
9.4.5 玩家動作邏輯與技能特效繪圖函數的實現................................................ 245
9.4.6 反派動作邏輯與繪圖函數的實現............................................................. 248
9.5 整合代碼,完成遊戲開發................................................................................ 251
9.6 玩遊戲.......................................................................................................... 269
9.7 遊戲打法攻略、改進與素材............................................................................. 271
9.8 章節小憩....................................................................................................... 272
第三篇 飛躍 · DirectX遊戲編程基礎
第10章 快到碗里來——DirectX大局觀認知................................................................. 275
10.1 對DirectX的認知......................................................................................... 276
10.1.1 DirectX的目前地位............................................................................. 276
10.1.2 DirectX的兩種不同含義...................................................................... 277
10.1.3 DirectX的幾套開發方案...................................................................... 278
10.1.4 圖形API體系認知............................................................................... 278
10.1.5 微軟的寵兒——DirectX....................................................................... 279
10.1.6 不甘做備胎——OpenGL...................................................................... 279
10.2 宿敵的世紀之斗:DirectX與OpenGL的博弈.................................................. 280
10.3 DirectX開發環境的配置................................................................................ 282
10.4 新版DirectXSDK的組件介紹....................................................................... 286
10.4.1 新版DirectXSDK中現存的組件.......................................................... 286
10.4.2 新版DirectXSDK中被移除的組件....................................................... 288
10.4.3 關於當前2D遊戲開發可用的圖形API................................................... 289
10.5 對DirectXSDK文件組成的剖析.................................................................... 289
10.6 讓DirectXSDK物盡其用............................................................................. 294
10.7 選擇我們的DirectX學習版本........................................................................ 295
10.7.1 DirectX的幾套版本簡介...................................................................... 295
10.7.2 DirectX11 vs DirectX9,現階段學哪個好.............................................. 295
10.8 當前Direct3D中的兩套渲染體系................................................................... 297
10.9 Direct3D程序的體系結構.............................................................................. 298
10.10 學習DirectX的兩個技巧............................................................................. 300
10.11 章節小憩................................................................................................... 300
第11章 三維內功心法——Direct3D編程基礎............................................................... 301
11.1 典型Direct3D程序流程分析.......................................................................... 302
11.2 對COM介面對象的一些介紹......................................................................... 303
11.3 寫一個DirectX程序通用框架........................................................................ 304
11.4 化腐朽為神奇——Direct3D初始化四步曲....................................................... 310
11.4.1 Direct3D初始化四步曲概述................................................................. 310
11.4.2 Direct3D初始化四步曲之一:創介面.................................................... 310
11.4.3 Direct3D初始化四步曲之二:取信息.................................................... 311
11.4.4 Direct3D初始化四步曲之三:填內容.................................................... 313
11.4.5 Direct3D初始化四步曲之四:創設備.................................................... 315
11.4.6 Direct3D初始化四步曲代碼賞析........................................................... 316
11.4.7 示常式序D3Ddemo1.......................................................................... 317
11.5 深入理解Direct3D動畫顯示技術——交換鏈................................................... 319
11.6 對固定功能渲染流水線體系的理解................................................................. 321
11.7 Direct3D中的“繪製金鑰匙”—— Direct3D設備介面..................................... 322
11.8 Direct3D中二維文本的繪製.......................................................................... 323
11.8.1 D3DXCreateFont函數........................................................................ 324
11.8.2 DrawText函數.................................................................................... 325
11.9 起承轉合的藝術:Direct3D渲染五步曲.......................................................... 326
11.9.1 Direct3D渲染五步曲概述.................................................................... 326
11.9.2 五步曲之一:清屏操作........................................................................ 327
11.9.3 五步曲之二:開始繪製........................................................................ 329
11.9.4 五步曲之三:正式繪製........................................................................ 329
11.9.5 五步曲之四:結束繪製........................................................................ 330
11.9.6 五步曲之五:翻轉顯示........................................................................ 330
11.9.7 Direct3D渲染五步曲代碼整體賞析....................................................... 331
11.9.8 示常式序D3Ddemo2.......................................................................... 331
11.10 章節小憩................................................................................................... 337
第12章 騰飛前的助跑——Direct3D 繪製基礎............................................................. 338
12.1 頂點緩存的逆襲........................................................................................... 339
12.1.1 引言.................................................................................................. 339
12.1.2 頂點緩存相關基礎知識........................................................................ 339
12.1.3 頂點緩存使用四步曲之一:設計頂點緩存.............................................. 340
12.1.4 頂點緩存使用四步曲之二:創建頂點緩存.............................................. 342
12.1.5 頂點緩存使用四步曲之三:訪問頂點緩存.............................................. 345
12.1.6 頂點緩存使用四步曲之四:圖形的繪製.................................................. 347
12.1.7 示常式序D3Ddemo3.......................................................................... 350
12.2 索引緩存——頂點緩存的紅顏知己................................................................. 354
12.2.1 引言.................................................................................................. 354
12.2.2 索引緩存的使用思路............................................................................ 356
12.2.3 相濡以沫的頂點緩存與索引緩存........................................................... 357
12.2.4 雙劍合璧:頂點緩存、索引緩存使用四步曲........................................... 359
12.2.5 示常式序D3Ddemo4.......................................................................... 367
12.3 章節小憩..................................................................................................... 371
第13章 邁向三維世界——Direct3D 的四大變換.......................................................... 372
13.1 四大變換的基本認知..................................................................................... 373
13.2 四大變換之一:世界變換.............................................................................. 373
13.2.1 矩陣的平移......................................................................................... 375
13.2.2 矩陣的旋轉......................................................................................... 376
13.2.3 矩陣的縮放......................................................................................... 377
13.3 四大變換之二:取景變換.............................................................................. 378
13.4 四大變換之三:投影變換.............................................................................. 379
13.5 四大變換之四:視口變換.............................................................................. 381
13.6 總結............................................................................................................ 382
13.7 示常式序D3Ddemo5................................................................................... 382
13.8 章節小憩..................................................................................................... 389
第14章 繪製出質感的世界—光照與材質.................................................................. 390
14.1 引言............................................................................................................ 391
14.2 四大光照類型............................................................................................... 391
14.3 三大光源類型............................................................................................... 393
14.4 材質............................................................................................................ 398
14.5 關於頂點法線............................................................................................... 399
14.6 總結與升華.................................................................................................. 402
14.7 幾何體的快捷繪製........................................................................................ 402
14.7.1 D3D中內置的幾何體概述.................................................................... 402
14.7.2 D3D中幾種內置的幾何體繪製四步曲.................................................... 403
14.7.3 D3D中幾種內置幾何體的創建.............................................................. 404
14.8 示常式序D3Ddemo7................................................................................... 415
14.9 章節小憩..................................................................................................... 420
第15章 做遊戲的主人——輸出控制利器DirectInput.................................................... 421
15.1 引言............................................................................................................ 422
15.2 DirectInput介面概述.................................................................................... 422
15.3 DirectInput使用步驟詳解.............................................................................. 424
15.3.1 頭文件和庫文件的包含........................................................................ 424
15.3.2 創建DirectInput介面和設備................................................................. 424
15.3.3 設置數據格式..................................................................................... 427
15.3.4 設置協作級別..................................................................................... 427
15.3.5 設置特殊屬性..................................................................................... 428
15.3.6 獲取和輪詢設備.................................................................................. 429
15.3.7 讀取設備信息..................................................................................... 429
15.4 精鍊:DirectInput使用五步曲....................................................................... 431
15.5 DirectInput鍵盤按鍵鍵值總結....................................................................... 433
15.6 DirectInput滑鼠按鍵鍵值總結....................................................................... 434
15.7 示常式序D3Ddemo8................................................................................... 435
15.8 手把手封裝DirectInput到類中....................................................................... 440
15.9 封裝好的DirectInput類的使用....................................................................... 444
15.10 示常式序D3Ddemo9.................................................................................. 445
15.11 章節小憩................................................................................................... 451
第16章 起舞不落幕——與紋理映射的華麗邂逅........................................................... 452
16.1 紋理映射的概念........................................................................................... 453
16.2 紋理映射使用四步曲..................................................................................... 454
16.3 總結與升華.................................................................................................. 459
16.4 示常式序D3Ddemo10.................................................................................. 461
16.5 四大紋理過濾方式精講.................................................................................. 472
16.6 四大紋理定址方式精講.................................................................................. 477
16.7 紋理映射知識總結........................................................................................ 480
16.8 示常式序D3Ddemo11................................................................................. 483
16.9 章節小憩..................................................................................................... 489
第17章 他山之石可攻玉——三維遊戲模型的載入........................................................ 490
17.1 網格模型技術的前生今世.............................................................................. 491
17.2 認識三維建模軟體3DSMax和Maya............................................................. 491
17.3 對X文件的認識........................................................................................... 494
17.4 從3DSMax中導出X文件方法詳解............................................................... 495
17.5 網格模型介面ID3DXMESH........................................................................... 498
17.6 文件模型載入三步曲..................................................................................... 500
17.6.1 三步曲之一:通過X文件載入網格模型................................................. 500
17.6.2 三步曲之二:載入材質和紋理............................................................... 501
17.6.3 三步曲之三:繪製網格模型.................................................................. 502
17.6.4 總結與升華......................................................................................... 504
17.7 示常式序D3demo12.................................................................................... 505
17.8 章節小憩..................................................................................................... 510
第18章 水乳交融的藝術——Alpha混合技術................................................................ 511
18.1 初識Alpha通道與混合技術........................................................................... 512
18.2 Direct3D中的融合套路——融合因子............................................................. 512
18.3 融合運算方式的取法..................................................................................... 513
18.4 融合因子的取法........................................................................................... 514
18.5 Alpha的三處來源......................................................................................... 515
18.6 Alpha融合使用三步曲.................................................................................. 517
18.7 示常式序D3Ddemo13.................................................................................. 518
18.8 章節小憩..................................................................................................... 521
第19章 橫看成嶺側成峰——深度測試與Z緩存........................................................... 522
19.1 形象化理解深度測試..................................................................................... 523
19.2 深度測試相關概念講解.................................................................................. 523
19.3 深度測試使用四步曲..................................................................................... 524
19.4 示常式序D3Ddemo14.................................................................................. 527
19.5 章節小憩..................................................................................................... 529
第20章 虛實結合的光影——模板技術......................................................................... 530
20.1 對模板技術中概念的理解.............................................................................. 531
20.1.1 模板緩存............................................................................................ 531
20.1.2 模板測試............................................................................................ 531
20.2 模板測試精細講解........................................................................................ 532
20.2.1 創建模板緩衝區.................................................................................. 532
20.2.2 清除模板緩衝區.................................................................................. 533
20.2.3 模板測試相關參數介紹........................................................................ 534
20.2.4 對模板測試的一些理解........................................................................ 537
20.3 鏡面特效的實現........................................................................................... 538
20.4 通過實常式序講解........................................................................................ 539
20.5 示常式序D3Ddemo15.................................................................................. 543
20.6 章節小憩..................................................................................................... 548
第四篇 致用 · DirectX遊戲編程應用
第21章 翱翔於三維空間——遊戲攝像機的構建........................................................... 551
21.1 對攝像機的一些概述..................................................................................... 552
21.2 開始設計攝像機類........................................................................................ 552
21.3 關於向量計算的函數講解.............................................................................. 555
21.4 計算取景變換矩陣........................................................................................ 557
21.5 類的其餘實現細節........................................................................................ 560
21.6 示常式序D3Ddemo16.................................................................................. 566
21.7 章節小憩..................................................................................................... 574
第22章 鍾靈毓秀的世界——三維地形的構建............................................................... 575
22.1 三維地形繪製思路分析.................................................................................. 576
22.2 關於高度圖.................................................................................................. 577
22.2.1 高度圖的概念..................................................................................... 577
22.2.2 高度圖的製作..................................................................................... 578
22.2.3 用Photoshop製作高度圖................................................................... 579
22.2.4 在程序中讀取高度圖............................................................................ 581
22.3 地形類輪廓的書寫........................................................................................ 582
22.4 地形頂點的計算........................................................................................... 583
22.5 地形索引的計算........................................................................................... 585
22.6 渲染出地形.................................................................................................. 587
22.7 完成地形類的設計........................................................................................ 588
22.8 示常式序D3Ddemo17.................................................................................. 592
22.9 章節小憩..................................................................................................... 597
第23章 向碧藍的蒼穹致敬——三維天空的構建........................................................... 598
23.1 三維天空技術闡述........................................................................................ 599
23.2 天空盒的設計............................................................................................... 600
23.3 天空盒類的實現........................................................................................... 603
23.4 天空盒類的使用........................................................................................... 609
23.5 示常式序D3Ddemo18.................................................................................. 609
23.6 章節小憩..................................................................................................... 615
第24章 讓唯美的雪花飄揚——三維粒子系統的實現.................................................... 616
24.1 對粒子系統的基本認知.................................................................................. 617
24.2 粒子系統的基本原理..................................................................................... 618
24.3 雪花粒子系統的設計..................................................................................... 620
24.4 雪花粒子系統的實現..................................................................................... 623
24.5 雪花飛揚粒子類的使用.................................................................................. 628
24.6 示常式序D3Ddemo19.................................................................................. 629
24.7 章節小憩..................................................................................................... 635
第25章 造物主的降臨——多遊戲模型的載入............................................................... 636
25.1 網格模型的優化........................................................................................... 637
25.2 網格模型的克隆........................................................................................... 639
25.3 文件模型載入類的設計.................................................................................. 640
25.4 文件模型載入類的實現.................................................................................. 641
25.5 文件模型載入類的使用.................................................................................. 645
25.6 示常式序D3Ddemo20.................................................................................. 646
25.7 章節小憩..................................................................................................... 652
第五篇 升華 · 致我們的遊戲開發夢想
第26章 站在巨人肩膀上——遊戲引擎技術導論........................................................... 655
26.1 遊戲引擎的起源、意義和概念........................................................................ 656
26.1.1 遊戲引擎的起源和意義........................................................................ 656
26.1.2 遊戲引擎的概念理解............................................................................ 656
26.1.3 一款完善的遊戲引擎的構成.................................................................. 657
26.1.4 DirectX與遊戲引擎的區別................................................................... 657
26.2 人氣開源遊戲引擎介紹.................................................................................. 657
26.3 遊戲引擎排名的權威榜單一瞥........................................................................ 659
26.4 優秀的免費/開源第一人稱射擊遊戲介紹.......................................................... 661
26.5 關於遊戲引擎的一些思考.............................................................................. 664
26.6 市面上各類遊戲引擎完全列舉........................................................................ 665
附錄A 進階遊戲編程書籍總結與推薦............................................................................ 668
A.1 零基礎遊戲編程學習大體階段概括................................................................... 669
A.2 Windows遊戲編程入門書籍推薦..................................................................... 670
A.3 遊戲編程進階書籍推薦................................................................................... 670
A.3.1 DirectX入門........................................................................................ 670
A.3.2 地形方面............................................................................................. 671
A.3.3 物理方面............................................................................................. 671
A.3.4 數學方面............................................................................................. 672
A.3.5 引擎設計方面....................................................................................... 672
A.3.6 實時渲染方面....................................................................................... 673
A.3.7 圖形學方面.......................................................................................... 673
A.3.8 AI方面................................................................................................ 673
A.3.9 網路方面............................................................................................. 674
A.3.10 系列書籍方面..................................................................................... 674
A.3.11 策劃方面........................................................................................... 675
A.3.12 美工方面........................................................................................... 675
A.3.13 小說&電影......................................................................................... 675
A.3.14 其他.................................................................................................. 676
A.4 開源遊戲源代碼推薦...................................................................................... 676
後記 總有一天你將破蛹而出......................................................................................... 678

編輯推薦


端游開發是目前最熱的職業,報酬豐厚且能實現自己的遊戲夢想。作者歷經一年時間,編寫了這本詳細講解Windows遊戲開發的入門圖書。
《逐夢旅程:Windows遊戲編程之從零開始》由淺入深,從Windows遊戲開發的基本概念開始講解,寓教於樂,每個知識點都配有經典的遊戲源碼作為實例。讓讀者可以從零開始,邊玩邊學,熟練掌握Windows遊戲開發。
《逐夢旅程:Windows遊戲編程之從零開始》涵蓋了市場上最新的DirectX技術,使讀者在第一時間接觸最新、最前沿的遊戲開發技術,同時《逐夢旅程:Windows遊戲編程之從零開始》對目前遊戲市場里熱門的幾大遊戲引擎都進行了深入淺出的剖析和對比,讓讀者輕鬆邁入遊戲開發的殿堂。
《逐夢旅程:Windows遊戲編程之從零開始》適合Windows遊戲開發的初學者閱讀,也適合作為高等院校和培訓學校相關專業的教學參考書。
致終將由我們去復興的國產遊戲
我們所有的夢想都可以成真,只要我們有勇氣去追求它們(Allour dreams can come true, if we have the courage to pursue them)。
————沃爾特·迪斯尼
依稀記得那還是F4紅遍大街小巷,滿城都飄揚著《流星雨》的年代。
那個時候的電子遊戲,無論是投幣式的街機遊戲,還是網吧里的《反恐精英》、《流星蝴蝶劍》、《仙劍奇俠傳》、《星際爭霸》、《帝國時代》等引領時代的遊戲界的璀璨明珠,總能深深地吸引住每個純真無邪的孩童的心,絢爛的遊戲畫面總是讓孩童們流連忘返。
那個時候,每次放學后唯一單純的想法就是悄悄溜到學校附近的網吧,和電腦遊戲親密接觸。口袋裡有零花錢的時候就能玩上一會兒,沒有零花錢的時候就痴痴地站在屏幕前面看別人操縱著屏幕前的劍俠闖蕩世界。年少的我單純地認為,遊戲世界中存在著一個無比恢弘的世界,那是可以裝下夢想的地方。應該是我對遊戲的痴迷,對遊戲開發夢想的虔誠,讓我走向了研究遊戲開發的這條道路。
還記得那個香樟樹覆蓋的夏天,年幼無知的我在一幫同學中吹牛說:我長大后,一定要自己開發出比這些遊戲還牛、還要好玩的遊戲。
現在想想,這幾年走過的路途,真應了那句話,“現在的努力,都是為了小時候吹過的牛”。
這些年來,在學習遊戲編程的道路上有過驚喜,有過坎坷,有過自豪,有過悵惘,走了不少彎路,最終也算是走上了正途,小有所成。於是,我單曲循環著五月天的《有些事情現在不做一輩子都不會做了》,打開Word,打開Visual Studio,把自己這麼多年來的遊戲開發經驗和心得用文字凝聚起來,開始為大家編寫這本書。
而這麼一寫,就是一整年。
經過一年夙興夜寐,終於,趕在22歲生日之前,近百萬字的書稿隨著一聲響指而初具雛形。
“謹以此書獻給父母,因養育之恩無以回報;謹以此書獻給母校南京航空航天大學和烏克蘭國立航空航天大學,因賜予我一顆不甘平庸、上下求索的心;謹以此書獻給所有懷揣遊戲開發夢想的人們,因為,你們不是一個人在戰鬥。”
當在書稿的開篇寫下這三個“謹以”的時候,我終於意識到,這一年的夜以繼日,這一年的披星戴月,都是值得的。
然而,因為歲月積累的關係,這本書中滲透的編程思想或許不能和編程界中的泰斗們同日而語。但是我可以捂著胸口說,我把這些年自己悟出來的關於遊戲編程的學習方法和真知灼見,毫無保留地呈現給了大家。大家能看到的眼前的這些文字和代碼,全都是經過一遍又一遍的深思熟慮,一遍又一遍的修改,小心謹慎地敲出來的。
詳細研究過遊戲編程的朋友們都應該有這樣的共識:“中國人寫的書水平上不去,外國人寫的書水平有了,但是翻譯得往往都強差人意,理解不了”。也許正是這個原因,國內遊戲編程的入門門檻一直很高,DirectX一直被人們認為是很難學的。很多懷揣遊戲開發夢想的熱血青年們,信誓旦旦地開始著手學習遊戲編程的時候,往往卻被晦澀難懂的遊戲編程教材拒之夢想門外,碰了一鼻子灰,從此和最初的夢想失之交臂。我想,這或許是導致國產遊戲業界的萎靡,國產遊戲一直很難成長起來的原因之一。
在這樣的環境的激勵下,這本傾注我一年多心血的書出現了,願它能夠改變這樣的現狀。
願這本書,能幫助那些熱愛遊戲編程、懷揣遊戲開發夢想,卻苦於難以入門的人們,讓他們少走彎路。
願這本書,能為國產遊戲、國產遊戲引擎的崛起,開啟一扇門,迎接新的黎明。
我們都還年輕,該做的夢及時去做,該追尋的夢想用力去追尋。
我有一個夢想,將來的某一天,大家都能玩到擁有自己本土文化的優質遊戲。
我有一個夢想,有一天,西遊記能出ACT,讓老外去體會中國文化西遊記中“斗戰勝佛”的打擊快感,那一定比西方的動作巔峰之作《戰神》、《鬼泣》更加深邃。
我有一個夢想,有一天,上海灘能出沙盒遊戲,而不是玩《GTA》感受美國夢,亦或是玩著《熱血無賴》體驗國外公司強行塞給我們的“中國文化”。
我有一個夢想,有一天,不少3A大作不需要漢化,因為是我們自己的遊戲,配音是中國的,文化也是中國的。
我有一個夢想,將來的某一天,國產遊戲能像中國的其他產業一樣,以一個領跑者的姿態,面對全世界,面對全宇宙,器宇軒昂,揚眉吐氣。
這會是由我們一起去完成的夢想。
等著我們的好消息!
致謝·不是一個人在戰鬥
首先需要感謝親朋好友在我遠在異國他鄉留學期間創作這本書時,對我的全力支持。沒有他們在精神上的理解、鼓勵和噓寒問暖,一直有著輕微拖延症的我是不可能走出這一步並順利完成書稿的。
父母的養育成就了我這顆不甘平庸的心。追根溯源,本書的出版,是父母用心教育的結晶。養育之恩,沒齒難忘。
這本書起源於我在CSDN博客上開設的博客專欄《VisualC++遊戲開發》。沒想到連載引起了不小的反響,網友們普遍覺得我的寫作風格新穎,有趣,喜歡看,甚至每周一都像等待美劇更新一樣等待著文章的更新。正因為眾多網友的支持,才有了我想把自己多年以來的遊戲編程經驗總結成一本書的衝動。非常感謝那麼多在博客中回復與鼓勵我的朋友們。
在寫作的過程中,參考了大量遊戲編程相關的書籍和資料,站在巨人的肩膀上我們才能看得更遠。沒有前輩的貢獻,就沒有本書的出版,在這裡向這些前輩們表示衷心的感激。另外還需要感謝清華大學出版社圖格事業部夏毓彥老師和出版社的相關工作人員,他們對本書的順利出版做出了非常巨大的貢獻。
最後,讓我向所有幫助與支持我的朋友們與同學們真誠地說出那句一直未曾說出口的感謝。

作者簡介


毛星雲,網路昵稱“淺墨”,90后,熱愛遊戲編程的傢伙,有點倔的偽IT文藝青年。因為在CSDN上開設《VisualC++遊戲開發》博客專欄而被網友熟知,博客訪問量逾150萬餘人次。本科畢業於烏克蘭國立航空航天大學和南京航空航天大學,目前在南京航空航天大學讀研究生。
每天寫作5小時 一年寫出百萬字
毛星雲出生於1991年,今年剛滿22歲,是個不折不扣的90后。他於2009年進入南航航天學院“中國烏克蘭航天聯合培養班”,經過南航兩年的本科培養順利赴烏克蘭就讀大三大四,並完成本科學業畢業回國。
在烏克蘭留學期間,毛星雲完成了100餘萬字的《逐夢旅程:Windows遊戲編程之從零開始》一書。
博客記錄成長 訪問量逾百萬
一年多的時間,毛星雲陸續發表了70餘篇原創的博客文章,這些文章常常因為內容獨到新穎,被奉為佳作推薦至CSDN首頁。記者了解到,毛星雲的博客開設至今,訪問量已經突破了140萬人次,擁有4000餘名忠實粉絲。他常常被粉絲們稱呼為“淺墨大哥”“淺墨大神”。
WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始
WINDOWS遊戲編程之從零開始