C++游戲編程:創(chuàng)建3D游戲
-
>
決戰(zhàn)行測5000題(言語理解與表達(dá))
-
>
軟件性能測試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
深度學(xué)習(xí)
-
>
Unreal Engine 4藍(lán)圖完全學(xué)習(xí)教程
-
>
深入理解計(jì)算機(jī)系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應(yīng)用從入門到精通-(附贈1DVD.含語音視頻教學(xué)+辦公模板+PDF電子書)
C++游戲編程:創(chuàng)建3D游戲 版權(quán)信息
- ISBN:9787115514066
- 條形碼:9787115514066 ; 978-7-115-51406-6
- 裝幀:平裝-膠訂
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
C++游戲編程:創(chuàng)建3D游戲 本書特色
本書主要介紹用C 進(jìn)行3D電子游戲編程的方法,并深入探討游戲開發(fā)人員在實(shí)際工作中所使用的相關(guān)技術(shù)和系統(tǒng)。全書分為14章和1個(gè)附錄(附錄A)。第1~5章主要介紹2D電子游戲的內(nèi)容和電子游戲編程的核心概念;第6~14章主要介紹并講解3D電子游戲編程的內(nèi)容,其中第8章的內(nèi)容既適用于2D環(huán)境下的電子游戲編程,也適用于3D環(huán)境下的電子游戲編程;附錄A涵蓋一些C 中的重要概念,包括引用、隊(duì)列、指針、動態(tài)分配等。 本書以實(shí)際游戲項(xiàng)目為主線,詳細(xì)講解了開發(fā)相應(yīng)項(xiàng)目所需的知識及開發(fā)設(shè)計(jì)過程中采用的實(shí)現(xiàn)方法。 本書適合使用C 語言進(jìn)行電子游戲開發(fā)的初級或中級開發(fā)人員閱讀,也可供使用其他語言開發(fā)游戲(或使用其他游戲開發(fā)框架開發(fā)游戲)的技術(shù)人員參考,還可作為高等院校相關(guān)專業(yè)的參考用書(本書所涵蓋內(nèi)容相當(dāng)于大學(xué)課程設(shè)置中一個(gè)半學(xué)期的教學(xué)量)。
C++游戲編程:創(chuàng)建3D游戲 內(nèi)容簡介
本書主要介紹用C++進(jìn)行3D電子游戲編程的方法,并深入探討游戲開發(fā)人員在實(shí)際工作中所使用的相關(guān)技術(shù)和系統(tǒng)。全書分為14章和1個(gè)附錄(附錄A)!5章主要介紹2D電子游戲的內(nèi)容和電子游戲編程的核心概念;第6~14章主要介紹并講解3D電子游戲編程的內(nèi)容,其中第8章的內(nèi)容既適用于2D環(huán)境下的電子游戲編程,也適用于3D環(huán)境下的電子游戲編程;附錄A涵蓋一些C++中的重要概念,包括引用、隊(duì)列、指針、動態(tài)分配等。 本書以實(shí)際游戲項(xiàng)目為主線,詳細(xì)講解了開發(fā)相應(yīng)項(xiàng)目所需的知識及開發(fā)設(shè)計(jì)過程中采用的實(shí)現(xiàn)方法。 本書適合使用C++語言進(jìn)行電子游戲開發(fā)的初級或中級開發(fā)人員閱讀,也可供使用其他語言開發(fā)游戲(或使用其他游戲開發(fā)框架開發(fā)游戲)的技術(shù)人員參考,還可作為高等院校相關(guān)專業(yè)的參考用書(本書所涵蓋內(nèi)容相當(dāng)于大學(xué)課程設(shè)置中一個(gè)半學(xué)期的教學(xué)量)。
C++游戲編程:創(chuàng)建3D游戲 目錄
1.1 設(shè)置開發(fā)環(huán)境 1
1.1.1 Microsoft Windows 1
1.1.2 Apple macOS 2
1.2 獲取本書的源代碼 2
1.3 C 標(biāo)準(zhǔn)庫以外的程序庫 2
1.4 游戲循環(huán)和Game類 3
1.4.1 關(guān)于“幀”的詳解 3
1.4.2 實(shí)現(xiàn)一個(gè)骨骼Game類 5
1.4.3 Main函數(shù) 8
1.4.4 基本輸入處理 9
1.5 基本的2D圖形 11
1.5.1 顏色緩沖區(qū) 12
1.5.2 雙緩沖區(qū) 13
1.5.3 實(shí)現(xiàn)基本的2D圖形 15
1.5.4 繪制墻壁、一個(gè)球和一支球拍 17
1.6 更新游戲 19
1.6.1 真實(shí)時(shí)間和游戲時(shí)間 19
1.6.2 根據(jù)增量時(shí)間的游戲邏輯 19
1.6.3 更新球拍的位置 21
1.6.4 更新球的位置 22
1.7 游戲項(xiàng)目 25
1.8 總結(jié) 25
1.9 補(bǔ)充閱讀材料 25
1.10 練習(xí)題 26
1.10.1 練習(xí)題1 26
1.10.2 練習(xí)題2 26
第 2章 游戲?qū)ο蠛?D圖形 27
2.1 游戲?qū)ο?27
2.1.1 游戲?qū)ο蟮念愋?27
2.1.2 游戲?qū)ο竽P?28
2.1.3 將游戲?qū)ο笕谌胗螒蜓h(huán)中 32
2.2 精靈 34
2.2.1 加載圖像文件 34
2.2.2 繪制精靈 36
2.2.3 動畫精靈 39
2.3 滾動背景 41
2.4 游戲項(xiàng)目 43
2.5 總結(jié) 44
2.6 補(bǔ)充閱讀材料 45
2.7 練習(xí)題 45
2.7.1 練習(xí)題1 45
2.7.2 練習(xí)題2 45
2.7.3 練習(xí)題3 46
第3章 向量和基礎(chǔ)物理 47
3.1 向量 47
3.1.1 獲得兩點(diǎn)之間的向量:減法 48
3.1.2 向量縮放:標(biāo)量乘法 49
3.1.3 合并兩個(gè)向量:加法 49
3.1.4 確定距離:長度 50
3.1.5 確定方向:單位向量和標(biāo)準(zhǔn)化 51
3.1.6 將角度轉(zhuǎn)換為前向向量 52
3.1.7 將前向向量轉(zhuǎn)換為角度:反正切 52
3.1.8 確定兩個(gè)向量之間的角度:點(diǎn)積 53
3.1.9 計(jì)算法線:叉積 54
3.2 基本運(yùn)動 56
3.2.1 創(chuàng)建一個(gè)BasicMoveComponent類 56
3.2.2 創(chuàng)建一個(gè)InputComponent類 59
3.3 牛頓物理學(xué) 62
3.3.1 線性力學(xué)概述 62
3.3.2 用歐拉積分計(jì)算位置 63
3.3.3 關(guān)于可變步長的問題 63
3.4 基本碰撞檢測 64
3.4.1 圓與圓的交集 64
3.4.2 創(chuàng)建一個(gè)CircleComponent子類 65
3.5 游戲項(xiàng)目 66
3.6 總結(jié) 68
3.7 補(bǔ)充閱讀材料 68
3.8 練習(xí)題 68
3.8.1 練習(xí)題1 69
3.8.2 練習(xí)題2 69
3.8.3 練習(xí)題3 70
第4章 人工智能 71
4.1 狀態(tài)機(jī)行為 71
4.1.1 設(shè)計(jì)狀態(tài)機(jī) 71
4.1.2 基本狀態(tài)機(jī)的實(shí)現(xiàn) 72
4.1.3 以類表示的狀態(tài) 73
4.2 尋路 76
4.2.1 圖形 77
4.2.2 廣度優(yōu)先搜索 78
4.2.3 heuristics函數(shù) 81
4.2.4 貪婪*佳優(yōu)先搜索 83
4.2.5 A*搜索 87
4.2.6 迪杰斯特拉算法 89
4.2.7 跟隨路徑 90
4.2.8 其他圖形表示法 91
4.3 游戲樹 92
4.3.1 極大極小算法 93
4.3.2 處理不完整的游戲樹 95
4.3.3 α-β剪枝算法 96
4.4 游戲項(xiàng)目 98
4.5 總結(jié) 99
4.6 補(bǔ)充閱讀材料 100
4.7 練習(xí)題 100
4.7.1 練習(xí)題1 100
4.7.2 練習(xí)題2 101
第5章 開放圖形庫(OpenGL) 102
5.1 初始化OpenGL 102
5.1.1 設(shè)置OpenGL窗口 102
5.1.2 OpenGL上下文和初始化GLEW 104
5.1.3 渲染幀 105
5.2 三角形基礎(chǔ) 105
5.2.1 為何選擇多邊形 105
5.2.2 標(biāo)準(zhǔn)化設(shè)備坐標(biāo) 106
5.2.3 頂點(diǎn)和索引緩沖區(qū) 106
5.3 著色器 110
5.3.1 頂點(diǎn)著色器 111
5.3.2 片段著色器 111
5.3.3 編寫基本著色器 111
5.3.4 加載著色器 113
5.3.5 繪制三角形 117
5.4 變換基礎(chǔ) 119
5.4.1 對象空間 120
5.4.2 世界空間 120
5.4.3 變換為世界空間 121
5.5 矩陣與變換 124
5.5.1 矩陣乘法 124
5.5.2 使用矩陣來變換點(diǎn) 124
5.5.3 變換為世界空間,再現(xiàn) 126
5.5.4 將世界變換添加到Actor類 128
5.5.5 從世界空間變換到剪輯空間 130
5.5.6 更新著色器以使用變換矩陣 131
5.6 紋理映射 135
5.6.1 加載紋理 136
5.6.2 更新頂點(diǎn)格式 139
5.6.3 更新著色器 140
5.6.4 Alpha混合 143
5.7 游戲項(xiàng)目 145
5.8 總結(jié) 145
5.9 補(bǔ)充閱讀材料 146
5.10 練習(xí)題 146
5.10.1 練習(xí)題1 146
5.10.2 練習(xí)題2 146
第6章 3D圖形 147
6.1 3D中的Actor變換 147
6.1.1 3D變換矩陣 147
6.1.2 歐拉角 148
6.1.3 四元數(shù) 149
6.1.4 運(yùn)行中新的Actor變換 151
6.2 加載3D模型 152
6.2.1 選擇網(wǎng)格模型格式 153
6.2.2 更新頂點(diǎn)屬性 155
6.2.3 加載gpmesh文件 156
6.3 繪制3D網(wǎng)格 157
6.3.1 變換到剪輯空間,重訪 158
6.3.2 走出畫家算法,進(jìn)入Z緩沖 161
6.3.3 BasicMesh著色器 164
6.3.4 MeshComponent類 164
6.4 光照 167
6.4.1 再訪頂點(diǎn)屬性 167
6.4.2 光照的類型 167
6.4.3 Phong反射模型 169
6.4.4 實(shí)現(xiàn)光照 171
6.5 游戲項(xiàng)目 175
6.6 總結(jié) 175
6.7 補(bǔ)充閱讀材料 176
6.8 練習(xí)題 176
6.8.1 練習(xí)題1 176
6.8.2 練習(xí)題2 177
第7章 音頻 178
7.1 引導(dǎo)音頻 178
7.1.1 FMOD 179
7.1.2 安裝FMOD軟件 179
7.1.3 創(chuàng)建一個(gè)音頻系統(tǒng) 180
7.1.4 儲存庫和事件 182
7.1.5 SoundEvent類 185
7.2 3D位置音頻 188
7.2.1 設(shè)置基本偵聽器 189
7.2.2 向SoundEvent類添加位置功能 191
7.2.3 創(chuàng)建AudioComponent類,使角色和聲音事件相關(guān)聯(lián) 192
7.2.4 第三人稱游戲中的偵聽器 193
7.2.5 多普勒效應(yīng) 194
7.3 混合和效果 195
7.3.1 總線 196
7.3.2 快照 196
7.3.3 阻塞 197
7.4 游戲項(xiàng)目 198
7.5 總結(jié) 198
7.6 補(bǔ)充閱讀材料 199
7.7 練習(xí)題 199
7.7.1 練習(xí)題1 199
7.7.2 練習(xí)題2 199
第8章 輸入系統(tǒng) 200
8.1 輸入設(shè)備 200
8.1.1 輪詢 200
8.1.2 正沿和負(fù)沿 201
8.1.3 事件 203
8.1.4 基本InputSystem架構(gòu) 203
8.2 鍵盤輸入 205
8.3 鼠標(biāo)輸入 208
8.3.1 鼠標(biāo)按鍵和鼠標(biāo)位置 208
8.3.2 相對移動 210
8.3.3 鼠標(biāo)滾動輪 211
8.4 控制器輸入 212
8.4.1 啟用單一控制器 212
8.4.2 按鍵 213
8.4.3 模擬搖桿和扳機(jī) 215
8.4.4 過濾二維中的模擬搖桿 217
8.4.5 支持多個(gè)控制器 219
8.5 輸入映射 220
8.6 游戲項(xiàng)目 221
8.7 總結(jié) 222
8.8 補(bǔ)充閱讀材料 223
8.9 練習(xí)題 223
8.9.1 練習(xí)題1 223
8.9.2 練習(xí)題2 223
第9章 相機(jī) 224
9.1 第 一人稱相機(jī) 224
9.1.1 基本的第 一人稱移動 224
9.1.2 無俯仰角度的相機(jī) 226
9.1.3 加入俯仰角度的相機(jī) 226
9.1.4 第 一人稱模型 228
9.2 跟拍相機(jī) 229
9.2.1 基本跟拍相機(jī) 229
9.2.2 添加彈簧 231
9.3 軌道相機(jī) 233
9.4 樣條曲線相機(jī) 236
9.5 逆投影 239
9.6 游戲項(xiàng)目 241
9.7 總結(jié) 242
9.8 補(bǔ)充閱讀材料 242
9.9 練習(xí)題 242
9.9.1 練習(xí)題1 243
9.9.2 練習(xí)題2 243
第 10章 碰撞檢測 244
10.1 幾何(體)類型 244
10.1.1 線段 244
10.1.2 平面 247
10.1.3 包圍體 248
10.2 相交測試 252
10.2.1 包含點(diǎn)測試 252
10.2.2 包圍框測試 254
10.2.3 線段相交測試 257
10.2.4 動態(tài)對象 263
10.3 向游戲代碼添加碰撞 265
10.3.1 BoxComponent類 266
10.3.2 PhysWorld類 267
10.3.3 使用SegmentCast函數(shù)的球彈碰撞檢測 269
10.3.4 在PhysWorld類中測試BoxComponent組件間碰撞 270
10.3.5 玩家與墻壁的碰撞檢測 272
10.4 游戲項(xiàng)目 274
10.5 總結(jié) 275
10.6 補(bǔ)充閱讀材料 276
10.7 練習(xí)題 276
10.7.1 練習(xí)題1 276
10.7.2 練習(xí)題2 277
10.7.3 練習(xí)題3 277
第 11章 用戶界面 278
11.1 字體渲染 278
11.2 用戶界面屏幕 281
11.2.1 用戶界面屏幕棧 282
11.2.2 暫停菜單 284
11.2.3 按鈕 286
11.2.4 對話框 289
11.3 平視顯示器元素 291
11.3.1 添加十字準(zhǔn)線 291
11.3.2 添加雷達(dá) 293
11.4 本地化 296
11.4.1 使用Unicode 297
11.4.2 添加文本映射 297
11.4.3 其他本地化問題 299
11.5 支持多個(gè)分辨率 300
11.6 游戲項(xiàng)目 300
11.7 總結(jié) 301
11.8 補(bǔ)充閱讀材料 301
11.9 練習(xí)題 302
11.9.1 練習(xí)題1 302
11.9.2 練習(xí)題2 302
11.9.3 練習(xí)題3 302
第 12章 骨骼動畫 303
12.1 骨骼動畫的基礎(chǔ) 303
12.1.1 骨架和姿勢 304
12.1.2 反向綁定姿勢矩陣 307
12.1.3 動畫數(shù)據(jù) 307
12.1.4 蒙皮 308
12.2 實(shí)現(xiàn)骨骼動畫 309
12.2.1 使用帶有骨骼蒙皮的頂點(diǎn)屬性進(jìn)行繪制 310
12.2.2 加載骨架數(shù)據(jù) 314
12.2.3 加載動畫數(shù)據(jù) 315
12.2.4 蒙皮頂點(diǎn)著色器程序 319
12.2.5 更新動畫 321
12.3 游戲項(xiàng)目 323
12.4 總結(jié) 324
12.5 補(bǔ)充閱讀材料 325
12.6 練習(xí)題 325
12.6.1 練習(xí)題1 325
12.6.2 練習(xí)題2 325
第 13章 中間圖形 327
13.1 提高紋理質(zhì)量 327
13.1.1 紋理采樣、再訪 328
13.1.2 紋理分級細(xì)化 330
13.1.3 各向異性過濾 331
13.2 向紋理進(jìn)行渲染 332
13.2.1 創(chuàng)建紋理 333
13.2.2 創(chuàng)建一個(gè)Framebuffer對象 333
13.2.3 渲染到Framebuffer對象 335
13.2.4 在HUD中繪制后視鏡紋理 337
13.3 延遲著色 338
13.3.1 創(chuàng)建G-Buffer類 339
13.3.2 寫入G緩沖區(qū) 342
13.3.3 全局光照 344
13.3.4 添加點(diǎn)光源 348
13.3.5 改進(jìn)和問題 353
13.4 游戲項(xiàng)目 354
13.5 總結(jié) 354
13.6 補(bǔ)充閱讀材料 354
13.7 練習(xí)題 355
13.7.1 練習(xí)題1 355
13.7.2 練習(xí)題2 355
第 14章 級別文件和二進(jìn)制數(shù)據(jù) 357
14.1 級別文件加載 357
14.1.1 加載游戲的全局屬性 358
14.1.2 加載角色 362
14.1.3 加載組件 366
14.2 保存級別文件 370
14.2.1 保存級別文件的全局屬性 371
14.2.2 保存級別文件的角色和組件 372
14.3 二進(jìn)制數(shù)據(jù) 374
14.3.1 保存二進(jìn)制文件 375
14.3.2 加載二進(jìn)制的網(wǎng)格文件 377
14.4 游戲項(xiàng)目 379
14.5 總結(jié) 380
14.6 補(bǔ)充閱讀材料 381
14.7 練習(xí)題 381
14.7.1 練習(xí)題1 381
14.7.2 練習(xí)題2 382
附錄A 中級C 回顧 383
C++游戲編程:創(chuàng)建3D游戲 作者簡介
Sanjay Madhav畢業(yè)于美國南加州大學(xué),獲得了該校的計(jì)算機(jī)科學(xué)學(xué)士學(xué)位和碩士學(xué)位,目前在南加州大學(xué)攻讀計(jì)算機(jī)科學(xué)博士學(xué)位。自2008年起,他一直在南加州大學(xué)任教,主講多門編程和電子游戲編程課程。在此之前,他曾在多個(gè)電子游戲開發(fā)公司工作。他所服務(wù)過的公司有Electronic Arts、Neversoft和Pandemic Studios,所參與開發(fā)的游戲包括《榮譽(yù)勛章之血戰(zhàn)太平洋(Medal of Honor Pacific Assault)》《托尼霍克極限滑板8(Tony Hawk’s Project 8)》《指環(huán)王:征服(Lord of the Rings: Conquest)》和《破壞者(The Saboteur)》。Sanjay還是《Game Programming Algorithms and Techniques》的作者和《Multiplayer Game Programming》的共同作者。
- >
史學(xué)評論
- >
名家?guī)阕x魯迅:故事新編
- >
伊索寓言-世界文學(xué)名著典藏-全譯本
- >
龍榆生:詞曲概論/大家小書
- >
山海經(jīng)
- >
名家?guī)阕x魯迅:朝花夕拾
- >
新文學(xué)天穹兩巨星--魯迅與胡適/紅燭學(xué)術(shù)叢書(紅燭學(xué)術(shù)叢書)
- >
羅庸西南聯(lián)大授課錄