OpenGL ES 3.x遊戲開發(上卷)

OpenGL ES 3.x遊戲開發(上卷)

《OpenGL ES 3.x遊戲開發(上卷)》是2018年12月人民郵電出版社出版的圖書,作者是吳亞峰。

基本介紹

  • 中文名:OpenGL ES 3.x遊戲開發(上卷)
  • 作者:吳亞峰
  • 出版時間:2018年12月
  • 出版社:人民郵電出版社
  • 頁數:484 頁
  • ISBN:9787115433497
  • 定價:89 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書共分17章,內容按照必知必會的OpenGL ES 3.x基礎知識、基於實現基本特效以及真實大型套用、遊戲案例開發的順序進行詳細地講解。主要內容為:OpenGL ES 3.x的渲染管線介紹,OpenGL ES 3.x可程式渲染管線著色器的著色語言介紹,3D開發中投影、各種變換的原理與實現,介紹了OpenGL ES 3.x中光照的基本原理與實現、點法向量與面法向量的區別以及光照的每頂點計算與每片元計算的差別,介紹了紋理映射的基本原理與使用,介紹了使用OpenGL ES 3.0開發各種3D基本形狀的實現,包括圓柱、圓錐、圓環、螺旋管、幾何球以及貝塞爾曲線旋轉面等內容,講解了3D模型載入,介紹了混合和霧的基本原理與使用以及常用3D開發技巧,如標誌板、天空盒、鏡像繪製等,介紹了OpenGL ES 3.0中經常使用的幾種剪裁與測試,包括剪裁測試、Alpha測試、模板測試以及任意剪裁平面等,講解了感測器套用開發和Android 及iOS平台下的OpenGL ES開發。通過兩大案例,如休閒類遊戲3D可愛抓娃娃和3D樓盤展示系統把所學的知識套用起來,讓讀者儘快進入實戰角色。
本書適合OpenGL ES 3D套用開發的初學者、程式設計師、遊戲開 發者,也適合作為大專院校相關專業師生的學習用書以及培訓學校的教材。

圖書目錄

第 1章 Android概述 1
1.1 Android平台的特點及未來的趨勢 1
1.1.1 全新理念帶來的體驗風暴 1
1.1.2 手機3D遊戲和套用增長
迅速 2
1.2 搭建Android開發環境 2
1.2.1 JDK的安裝及環境變數的
配置 2
1.2.2 Android SDK的下載與配置 4
1.2.3 Eclipse集成開發環境的下載與配置 5
1.2.4 創建並啟動模擬器 8
1.3 Hello Android應用程式的開發 10
1.3.1 第 一個Android應用程式 10
1.3.2 Android應用程式的項目
結構 13
1.3.3 Android應用程式的調試 14
1.3.4 實際設備的在線上調試 16
1.4 已有Android項目的導入和運行 16
1.4.1 項目的導入 16
1.4.2 應用程式的運行 17
1.5 Android應用程式運行的機制 18
1.5.1 應用程式的系統架構 18
1.5.2 應用程式框架 18
1.5.3 Android運行時 19
1.5.4 系統庫 19
1.5.5 底層Linux核心 20
1.6 小結 20
第 2章 遊戲開發相關的 Android基礎知識 21
2.1 遊戲中的音效 21
2.1.1 遊戲中的即時音效 21
2.1.2 即時音效的一個案例 22
2.1.3 背景音樂播放技術 24
2.1.4 簡易音樂播放器的實現 26
2.2 簡單數據的存儲—Preferences 29
2.2.1 Preferences簡介 29
2.2.2 Preferences實現訪問時間的
記錄 29
2.3 手機自帶資料庫—SQLite 30
2.3.1 初識SQLite 30
2.3.2 SQLite資料庫的基本操作 31
2.3.3 SQLite資料庫的簡單案例 32
2.3.4 使用ContentProvider組件
共享數據 34
2.3.5 使用ContentResolver獲取
分享數據 36
2.4 檔案I/O 37
2.4.1 訪問SD卡中的檔案 38
2.4.2 訪問手機中的資料夾 39
2.4.3 讀取assets資料夾下的內容 41
2.5 Socket網路通信 42
2.5.1 Socket開發基本知識 42
2.5.2 伺服器端 43
2.5.3 客戶端 44
2.6 藍牙通信 45
2.6.1 藍牙通信的基本知識 45
2.6.2 聊天案例概覽 46
2.6.3 聊天案例的開發過程 47
2.7 小結 57
第3章 初識OpenGL ES 3.x 58
3.1 OpenGL ES 3.x概述 58
3.1.1 OpenGL ES 3.x簡介 58
3.1.2 初識OpenGL ES 3.0套用
程式 61
3.1.3 OpenGL ES 3.1新特性簡介 68
3.2 著色器與渲染管線 68
3.2.1 OpenGL ES 2.0的渲染管線 68
3.2.2 OpenGL ES 3.0的渲染管線 74
3.2.3 OpenGL ES中立體物體的
構建 76
3.3 主流手機GPU大PK 77
3.3.1 手機GPU四大家族對比 77
3.3.2 主流GPU的性能參數比較 80
3.4 小結 81
第4章 著色語言Shading Language 82
4.1 著色語言概述 82
4.2 著色語言基礎 82
4.2.1 數據類型概述 83
4.2.2 數據類型的基本使用 87
4.2.3 運算符 89
4.2.4 構造函式 91
4.2.5 類型轉換 92
4.2.6 存儲限定符 93
4.2.7 插值限定符 98
4.2.8 一致塊 99
4.2.9 layout限定符 100
4.2.10 流程控制 102
4.2.11 函式的聲明與使用 104
4.2.12 片元著色器中浮點變數
精度的指定 105
4.2.13 程式的基本結構 106
4.3 特殊的內建變數 106
4.3.1 頂點著色器中的內建變數 106
4.3.2 片元著色器中的內建變數 107
4.3.3 內建常量 108
4.3.4 內建uniform變數 108
4.4 著色語言的內置函式 109
4.4.1 角度轉換與三角函式 109
4.4.2 指數函式 110
4.4.3 常見函式 111
4.4.4 幾何函式 114
4.4.5 矩陣函式 116
4.4.6 向量關係函式 116
4.4.7 紋理採樣函式 117
4.4.8 微分函式 120
4.4.9 浮點數的打包與解包函式 120
4.5 用invariant修飾符避免值變問題 121
4.6 預處理器 122
4.7 小結 123
第5章 必知必會的3D開發知識—
投影及各種變換 124
5.1 攝像機的設定 124
5.2 兩種投影方式 125
5.2.1 正交投影 125
5.2.2 透視投影 132
5.3 各種變換 134
5.3.1 基本變換的相關數學知識 134
5.3.2 平移變換 135
5.3.3 旋轉變換 138
5.3.4 縮放變換 139
5.3.5 基本變換的實質 140
5.4 所有變換的完整流程 141
5.5 繪製方式 144
5.5.1 各種繪製方式概覽 145
5.5.2 點與線段繪製方式 146
5.5.3 三角形條帶與扇面繪製方式 147
5.5.4 頂點法與索引法 151
5.5.5 layout限定符的使用 155
5.6 頂點常量屬性 156
5.6.1 頂點常量基本知識 156
5.6.2 一個簡單的案例 156
5.7 設定合理的視角 158
5.8 設定合理的透視參數 163
5.9 多邊形偏移 166
5.10 卷繞和背面剪裁 168
5.10.1 基本知識 168
5.10.2 一個簡單的案例 169
5.11 小結 170
第6章 光照 171
6.1 曲面物體的構建 171
6.1.1 球體構建的基本原理 171
6.1.2 案例效果概覽 172
6.1.3 開發步驟 172
6.2 基本光照效果 175
6.2.1 光照的基本模型 175
6.2.2 環境光 175
6.2.3 散射光 177
6.2.4 鏡面光 181
6.2.5 三種光照通道的合成 185
6.3 定位光與定向光 187
6.4 點法向量和面法向量 189
6.5 光照的每頂點計算與每片元計算 191
6.6 小結 193
第7章 紋理映射 194
7.1 初識紋理映射 194
7.1.1 基本原理 194
7.1.2 一個簡單的案例 195
7.1.3 色彩通道的靈活組合 199
7.2 紋理拉伸 201
7.2.1 三種拉伸方式概覽 201
7.2.2 不同拉伸方式的案例 203
7.3 紋理採樣 207
7.3.1 紋理採樣概述 207
7.3.2 **近點採樣 207
7.3.3 線性紋理採樣 208
7.3.4 MIN與MAG採樣 209
7.3.5 不同紋理採樣方式的案例 210
7.4 mipmap紋理技術 214
7.5 多重紋理與過程紋理 215
7.5.1 案例概覽 215
7.5.2 將2D紋理映射到球面上的
策略 216
7.5.3 案例的場景結構 217
7.5.4 開發過程 218
7.6 壓縮紋理的使用 224
7.7 點精靈 226
7.7.1 基本知識 226
7.7.2 一個簡單案例 227
7.8 3D紋理 229
7.9 2D紋理數組 233
7.10 採樣器配置對象的使用 237
7.11 小結 239
第8章 3D基本形狀的構建 240
8.1 圓柱體 240
8.1.1 頂點原始位置的生成 240
8.1.2 案例的開發 242
8.2 圓錐體 244
8.2.1 頂點原始位置的生成 244
8.2.2 案例的開發 246
8.3 圓環體 248
8.3.1 頂點原始位置的生成 248
8.3.2 案例的開發 249
8.4 螺旋管 250
8.4.1 頂點原始位置的生成 250
8.4.2 案例的開發 251
8.5 幾何球 252
8.5.1 頂點原始位置的生成 252
8.5.2 案例的開發 254
8.6 足球碳分子模型的搭建 259
8.6.1 搭建的基本原理 259
8.6.2 案例的開發 261
8.7 貝塞爾曲線及旋轉面 264
8.7.1 三維旋轉曲面的生成 264
8.7.2 貝塞爾曲線 265
8.7.3 Bezier曲線生成工具 266
8.7.4 印度古典建築場景的開發 268
8.8 小結 269
第9章 更逼真的遊戲場景——3D模型
載入 270
9.1 obj模型檔案概述 270
9.1.1 obj檔案的格式 270
9.1.2 用3ds Max設計3D模型 271
9.2 載入obj檔案 272
9.2.1 載入僅有頂點坐標與面數據的obj檔案 272
9.2.2 載入後自動計算面法向量 275
9.2.3 載入後自動計算平均法
向量 278
9.2.4 載入紋理坐標 280
9.2.5 載入頂點法向量 283
9.3 雙面光照 284
9.4 小結 286
第 10章 獨特的場景渲染技術—
混合與霧 287
10.1 混合技術 287
10.1.1 混合基本知識 287
10.1.2 源因子和目標因子 288
10.1.3 簡單混合效果案例 290
10.1.4 ETC2壓縮紋理的使用 292
10.2 地月系雲層效果的實現 295
10.3 霧 297
10.3.1 霧的原理與優勢 297
10.3.2 霧的簡單實現 298
10.4 小結 300
第 11章 常用的3D開發技巧— 標誌板、天空盒、鏡像繪製等 301
11.1 標誌板 301
11.1.1 案例效果與基本原理 301
11.1.2 開發步驟 302
11.2 灰度圖地形 305
11.2.1 基本原理 306
11.2.2 普通灰度圖地形 306
11.2.3 過程紋理地形 309
11.2.4 MipMap地形 311
11.2.5 頂點著色器採樣紋理
地形 312
11.3 用粒子沉積算法構建地形 314
11.3.1 粒子沉積法的基本原理 314
11.3.2 地形設計器的使用 316
11.3.3 粒子沉積的核心算法類 318
11.4 天空盒與天空穹 319
11.4.1 天空盒 319
11.4.2 天空穹 321
11.4.3 天空盒與天空穹的使用
技巧 322
11.5 簡單鏡像效果 323
11.5.1 鏡像基本原理 323
11.5.2 基本效果案例 323
11.5.3 升級效果案例 326
11.6 動態文本輸出 327
11.6.1 案例效果與基本原理 327
11.6.2 具體開發步驟 327
11.7 非真實感繪製 329
11.7.1 基本原理與案例效果 329
11.7.2 具體開發步驟 331
11.8 描邊效果的實現 333
11.8.1 沿法線擠出輪廓 333
11.8.2 在視空間中擠出 335
11.9 小結 336
第 12章 渲染出更加酷炫的3D場景—
幾種剪裁與測試 337
12.1 剪裁測試 337
12.1.1 基本原理與核心代碼 337
12.1.2 一個主次視角的簡單案例 337
12.2 Alpha測試 338
12.2.1 Alpha測試基本原理 339
12.2.2 一個橢圓視窗的案例 339
12.3 模板測試 341
12.3.1 基本原理 341
12.3.2 一個簡單的案例 343
12.4 任意剪裁平面 344
12.4.1 基本原理 344
12.4.2 茶壺被任意平面剪裁的
案例 345
12.5 小結 346
第 13章 引人入勝的遊戲特性—
感測器套用開發 347
13.1 基本的開發流程 347
13.2 加速度感測器 349
13.2.1 加速度感測器簡介 349
13.2.2 案例的開發 350
13.3 磁場感測器 351
13.3.1 磁場感測器簡介 351
13.3.2 案例的開發 351
13.4 陀螺儀感測器 352
13.4.1 陀螺儀感測器簡介 352
13.4.2 案例的開發 353
13.5 光感測器 354
13.5.1 光感測器簡介 354
13.5.2 案例的開發 354
13.6 溫度感測器 355
13.6.1 溫度感測器簡介 355
13.6.2 案例的開發 355
13.7 接近感測器 356
13.7.1 接近感測器簡介 357
13.7.2 案例的開發 357
13.8 姿態感測器 358
13.8.1 姿態感測器簡介 358
13.8.2 案例的開發 360
13.9 加速度感測器綜合案例 361
13.10 感測器的坐標軸問題 363
13.11 小結 366
第 14章 Android NDK及iOS 平台下的
OpenGL ES開發 367
14.1 使用Android NDK進行OpenGL ES
開發 367
14.1.1 Android NDK開發環境的下
載及配置 367
14.1.2 Android NDK項目在Eclipse
中的配置 370
14.1.3 使用Android NDK開發簡單的
OpenGL ES 3.0程式 371
14.2 使用Android NDK開發山地地形
場景 378
14.2.1 案例效果及山地繪製類的
開發 379
14.2.2 NDK端渲染函式的開發 380
14.3 基於iOS平台開發OpenGL ES 3.0
程式 382
14.3.1 案例運行效果及Xcode項目的
創建 382
14.3.2 案例的開發過程 385
14.4 基於iOS平台的地月系場景
案例 390
14.4.1 案例的運行效果 391
14.4.2 案例的開發過程 391
14.5 小結 394
第 15章 Web端3D遊戲開發——WebGL 3D套用開發 395
15.1 WebGL概覽 395
15.1.1 WebGL簡介 395
15.1.2 WebGL效果展示 396
15.2 初識WebGL套用 396
15.2.1 WebGL套用案例部署運行
步驟簡介 397
15.2.2 簡單渲染3D模型案例的
開發 397
15.3 加入光照效果的WebGL案例 404
15.4 帶有紋理貼圖的WebGL案例 407
15.4.1 一個簡單的案例 408
15.4.2 WebGL版的地月系案例 411
15.5 小結 413
第 16章 休閒類遊戲—3D
可愛抓娃娃 414
16.1 遊戲的背景及功能概述 414
16.1.1 背景描述 414
16.1.2 功能介紹 414
16.2 遊戲的策劃及準備工作 417
16.2.1 遊戲的策劃 417
16.2.2 手機平台下遊戲的準備
工作 418
16.3 遊戲的架構 420
16.3.1 各個類的簡要介紹 420
16.3.2 遊戲框架簡介 423
16.4 界面顯示類 424
16.4.1 顯示界面類
MySurfaceView 424
16.4.2 遊戲界面類GameView 426
16.4.3 遊戲主選單界面類MainView 430
16.5 輔助工具類 431
16.5.1 輔助類 432
16.5.2 自定義管理器類 436
16.5.3 執行緒類 439
16.6 繪製相關類 441
16.6.1 3D模型繪製類的開發 441
16.6.2 BN2DObject繪製類的開發 442
16.7 粒子系統的開發 444
16.7.1 基本原理 444
16.7.2 開發步驟 444
16.8 本遊戲中的著色器 447
16.9 遊戲的最佳化及改進 449
16.10 小結 449
第 17章 基於WebGL的3D 樓盤展示
系統 450
17.1 套用背景及功能概述 450
17.1.1 背景概述 450
17.1.2 功能介紹 450
17.2 功能預覽及架構 451
17.2.1 基於WebGL的3D樓盤展示
系統功能預覽 451
17.2.2 基於WebGL的3D樓盤展示
系統結構 454
17.3 Web平台下套用開發前的準備
工作 455
17.3.1 圖片資源的蒐集 455
17.3.2 模型資源的採集 456
17.4 地圖設計器的開發 457
17.4.1 地圖設計器的開發設計
思路 457
17.4.2 地圖設計器的框架介紹 458
17.4.3 地圖設計器的開發步驟 458
17.5 公共函式介紹 461
17.5.1 工具函式檔案GLUtil.js 461
17.5.2 obj載入檔案
LoadObjUtil.js 463
17.5.3 著色器載入檔案
LoadShaderUtil.js 464
17.5.4 3D物體繪製檔案
ObjObject.js 465
17.5.5 矩陣操作函式檔案
MatrixState.js 466
17.6 物體創建及繪製相關函式介紹 467
17.6.1 創建普通物體檔案
loadObject.js 467
17.6.2 地面繪製檔案
DrawLandMaps.js 468
17.6.3 普通按鈕繪製檔案
DrawButton.js 470
17.7 各個功能模組的實現 470
17.7.1 主界面mainView.html的
開發 470
17.7.2 樓房模型界面
houseModel.html的實現 475
17.7.3 戶體模型界面
roomType.html的開發 477
17.7.4 小區瀏覽界面
residentialGarden.html的
實現 478
17.8 套用中運用的著色器介紹 481
17.8.1 普通物體著色器 481
17.8.2 不帶光照物體著色器 483
17.8.3 天空盒著色器 483
17.9 套用的最佳化與改進 484
17.10 小結 484

相關詞條

熱門詞條

聯絡我們