首 頁
手機版

OpenGL ES 3.x 游戲開發(fā)(下卷) 吳亞峰pdf掃描版

OpenGL ES 3.x 游戲開發(fā)(下卷)是一本基于OpenGL ES 3.x軟件而編寫的游戲開發(fā)設計指導書籍,由吳亞峰編著。全書組織上本著“起點低、終點高”的原則,內容涵蓋了從學習OpenGL ES 3.x必知必會的基礎知識到OpenGL ES 3.x實現各種高級特效,并配合每個需要講解的知識點給出了豐富的插圖與完整的案例,使有初學者可以更輕松的上手,也便于有一定基礎的讀者深入學習,適用于游戲開發(fā)者使用,歡迎免費下載閱讀。

內容介紹

《OpenGL ES 3.x 游戲開發(fā)(下卷)》全書共分14章,內容涵蓋了從OpenGL ES 3.x著色器的使用技巧到高級光影效果以及物理模擬問題的解決。介紹了OpenGL ES 3.x中的各種緩沖區(qū)對象和頂點著色器與片元著色器的使用技巧,以及高級光影效果的實現,如凹凸映射、環(huán)境反射、陰影、倒影、鏡頭光暈等。介紹了杰出的3D物理引擎Bullet(Java和C++版本),詳細介紹了骨骼動畫的開發(fā),包括加載ms3d骨骼動畫以及開發(fā)自定義格式的骨骼動畫。系統(tǒng)地討論了OpenGL ES 3.x開發(fā)中的性能優(yōu)化問題,最后還介紹了OpenGL ES 3.1新增的計算著色器功能。給出了基于NDK的大型游戲案例——火力籃球和iOS下的3D游戲案例——方塊翻轉,方便讀者快速上手應用。

章節(jié)目錄

第1章 緩沖區(qū)對象 1
1.1 頂點緩沖區(qū) 1
1.1.1 基本知識 1
1.1.2 一個簡單的案例 4
1.2 頂點數組對象 6
1.2.1 基本知識與案例效果 6
1.2.2 案例開發(fā)步驟 7
1.3 一致緩沖區(qū)對象 8
1.3.1 基本知識與案例效果 9
1.3.2 案例開發(fā)步驟 10
1.4 映射緩沖區(qū)對象 13
1.4.1 基本知識與案例效果 13
1.4.2 案例開發(fā)步驟 15
1.5 其他緩沖區(qū)對象操作 18
1.5.1 復制緩沖區(qū)對象 18
1.5.2 從顏色緩沖區(qū)復制紋理數據 18
1.6 幀緩沖與渲染緩沖 20
1.6.1 幀緩沖與渲染緩沖對象 20
1.6.2 案例開發(fā)步驟 23
1.7 多重渲染目標 26
1.7.1 基本知識 26
1.7.2 一個簡單的案例 26
1.8 小結 29
第2章 頂點著色器的妙用 30
2.1 飄揚的旗幟 30
2.1.1 基本原理 30
2.1.2 開發(fā)步驟 31
2.2 扭動的軟糖 33
2.2.1 基本原理 33
2.2.2 開發(fā)步驟 34
2.3 風吹椰林場景的開發(fā) 35
2.3.1 椰子樹隨風搖擺的基本原理 35
2.3.2 開發(fā)步驟 36
2.4 展翅飛翔的雄鷹 39
2.4.1 基本原理 39
2.4.2 開發(fā)步驟 40
2.5 二維扭曲 42
2.5.1 基本原理 42
2.5.2 開發(fā)步驟 43
2.6 吹氣膨脹特效 45
2.6.1 特效基本原理 46
2.6.2 特效開發(fā)步驟 46
2.7 固定渲染管線與可編程渲染管線實現方案的對比 48
2.8 小結 49
第3章 片元著色器的妙用 50
3.1 程序紋理技術 50
3.1.1 磚塊著色器 50
3.1.2 沙灘球著色器 52
3.2 數字圖像處理 53
3.2.1 卷積的基本知識 53
3.2.2 平滑過濾 54
3.2.3 邊緣檢測 55
3.2.4 銳化處理 56
3.2.5 浮雕效果 56
3.2.6 圖像漸變 58
3.2.7 卡通渲染特效 59
3.3 分形著色器 60
3.3.1 曼德布羅集簡介 61
3.3.2 曼德布羅集著色器的實現 61
3.3.3 將曼德布羅集紋理應用到實際物體上 63
3.3.4 茱莉亞集著色器的實現 63
3.4 3D紋理的妙用 65
3.4.1 噪聲函數的基礎知識 65
3.4.2 柏林噪聲函數生成工具 68
3.4.3 3D噪聲紋理木頭茶壺的
開發(fā) 69
3.5 體積霧 72
3.5.1 基本原理 72
3.5.2 開發(fā)步驟 73
3.6 粒子系統(tǒng)火焰的開發(fā) 75
3.6.1 火焰的基本原理 75
3.6.2 普通版火焰 77
3.6.3 點精靈版火焰 82
3.6.4 變換反饋版火焰 85
3.7 小結 89
第4章 真實光學環(huán)境的模擬 90
4.1 反射環(huán)境模擬 90
4.1.1 案例效果與基本原理 90
4.1.2 反射環(huán)境開發(fā)步驟 91
4.2 折射環(huán)境模擬 93
4.2.1 案例效果與基本原理 93
4.2.2 開發(fā)步驟 95
4.3 色散效果的模擬 96
4.3.1 案例效果與基本原理 96
4.3.2 開發(fā)步驟 97
4.4 菲涅爾效果的模擬 97
4.4.1 案例效果與基本原理 97
4.4.2 菲涅爾效果開發(fā)步驟 98
4.5 凹凸映射 99
4.5.1 案例效果與基本原理 99
4.5.2 法向量紋理圖的生成 100
4.5.3 切向量的計算 103
4.5.4 案例的開發(fā) 105
4.5.5 使用3ds Max制作法向量
紋理圖 109
4.6 高真實感地形 111
4.6.1 基本思路 111
4.6.2 一個簡單的案例 112
4.7 鏡頭光暈 115
4.7.1 基本原理 115
4.7.2 一個簡單的案例 116
4.8 小結 119
第5章 陰影及高級光照 120
5.1 投影貼圖 120
5.1.1 案例效果與基本原理 120
5.1.2 開發(fā)步驟 121
5.2 陰影的重要性 123
5.3 平面陰影 125
5.3.1 案例效果與基本原理 125
5.3.2 開發(fā)步驟 126
5.4 陰影映射 129
5.4.1 陰影映射案例效果與基本
原理 129
5.4.2 距離紋理圖的生成 130
5.4.3 陰影場景的繪制 135
5.5 陰影貼圖 138
5.5.1 案例效果與基本原理 138
5.5.2 開發(fā)步驟 139
5.6 靜態(tài)光照貼圖 140
5.6.1 案例效果與基本原理 140
5.6.2 使用3ds Max制作靜態(tài)光照
貼圖 141
5.6.3 案例的開發(fā) 142
5.7 聚光燈高級光源 144
5.7.1 案例效果與基本原理 144
5.7.2 案例的開發(fā) 145
5.8 半球光照 146
5.8.1 案例效果與基本原理 146
5.8.2 案例的開發(fā) 148
5.9 光線跟蹤 149
5.9.1 光線跟蹤案例效果與基本
原理 149
5.9.2 光線跟蹤開發(fā)步驟 153
5.10 高級鏡像技術 162
5.10.1 案例效果與基本原理 162
5.10.2 開發(fā)步驟 163
5.11 高真實感水面倒影 168
5.11.1 案例效果與基本原理 168
5.11.2 開發(fā)步驟 170
5.12 運動模糊 175
5.12.1 普通運動模糊 176
5.12.2 高級運動模糊 179
5.13 小結 183
第6章 游戲開發(fā)中的物理學 184
6.1 碰撞檢測基本技術 184
6.1.1 AABB包圍盒的基本原理 184
6.1.2 AABB包圍盒的計算 185
6.1.3 AABB包圍盒的碰撞檢測 186
6.1.4 一個AABB包圍盒的案例 188
6.1.5 旋轉后的AABB包圍盒 189
6.1.6 AABB包圍盒的使用要點 193
6.1.7 OBB包圍盒 193
6.2 穿透效應 194
6.2.1 案例的運行效果與基本
原理 194
6.2.2 具體開發(fā)步驟 195
6.3 粒子系統(tǒng) 195
6.3.1 案例運行效果與基本原理 195
6.3.2 CPU版案例的開發(fā) 196
6.3.3 GPU版案例開發(fā)步驟 197
6.4 彈簧質點模型模擬旗幟 199
6.4.1 彈簧質點模型基本原理 199
6.4.2 彈簧質點模型案例的運行效果及開發(fā)步驟 200
6.5 彈簧質點模型模擬球網 208
6.5.1 彈簧質點模型的基本原理 209
6.5.2 彈簧質點模型的案例的運行效果及開發(fā)步驟 209
6.6 小結 211
第7章 3D物理引擎一——JBullet 212
7.1 物理引擎很重要 212
7.1.1 什么是物理引擎 212
7.1.2 常見的物理引擎 212
7.2 JBullet物理引擎概覽 214
7.2.1 基本的物理學概念 215
7.2.2 JBullet中常用類的介紹 216
7.3 箱子相互碰撞的案例 223
7.3.1 案例運行效果及準備工作 223
7.3.2 案例的基本框架結構 224
7.3.3 常量類——Constant 225
7.3.4 3D場景渲染類——MySurfaceView 225
7.3.5 水平地面——TexFloor類 227
7.3.6 箱子——TexCube類 228
7.4 復合碰撞形狀的使用 229
7.4.1 案例運行效果 229
7.4.2 立方體圓柱復合形狀——CubeCylinder類 229
7.5 凹凸地形的案例 231
7.5.1 案例運行效果 231
7.5.2 地形類——LandForm 232
7.6 任意形狀物體的碰撞 233
7.6.1 案例運行效果 233
7.6.2 加載物體類——LoadedObject VertexNormal 233
7.6.3 加載物體剛體類——LoadRigidBody 234
7.7 鉸鏈關節(jié) 235
7.7.1 鉸鏈關節(jié)的基本知識 235
7.7.2 鉸鏈關節(jié)案例的運行效果 236
7.7.3 鉸鏈關節(jié)旋轉角速度的計算 237
7.7.4 3D界面渲染類——MySurfaceView 238
7.8 滑動關節(jié) 240
7.8.1 滑動關節(jié)的基本知識 240
7.8.2 案例效果圖 241
7.8.3 3D界面渲染類——MySurfaceView 241
7.9 六自由度關節(jié) 244
7.9.1 六自由度關節(jié)的基本知識 244
7.9.2 六自由度關節(jié)案例的運行
效果 245
7.9.3 人偶類——Doll 246
7.9.4 拾取時采用的點對點關節(jié) 247
7.10 交通工具 250
7.10.1 交通工具開發(fā)要點 250
7.10.2 交通工具案例的運行
效果 251
7.10.3 3D場景渲染類——
MySurfaceView 251
7.10.4 汽車類——Car 253
7.10.5 汽車繪制類——
VehicleDraw 257
7.11 小結 258
第8章 3D物理引擎二——Bullet 259
8.1 Bullet中的常用類和結構體 259
8.1.1 btScalar類——被封裝的
浮點類 259
8.1.2 btVector3類——三維向量類 259
8.1.3 btTransform類——變換類 261
8.1.4 btRigidBody類——剛體類 262
8.1.5 btDynamicsWorld類——物理世界類 263
8.1.6 btDiscreteDynamicsWorld類——
離散物理世界類 264
8.1.7 btSoftRigidDynamicsWorld類——支持模擬軟體的物理
世界類 264
8.1.8 btCollisionShape類——碰撞形狀類 265
8.1.9 btStaticPlaneShape類——靜態(tài)平面形狀 265
8.1.10 btSphereShape類——球體形
狀類 266
8.1.11 btBoxShape類——長方體盒
碰撞形狀類 266
8.1.12 btCylinderShape類——圓柱
形狀類 266
8.1.13 btCapsuleShape類——膠囊
形狀類 266
8.1.14 btConeShape類——圓錐形
狀類 267
8.1.15 btCompoundShape類——復
合碰撞形狀類 267
8.2 簡單的物理場景 267
8.2.1 案例運行效果 267
8.2.2 案例的基本框架結構 268
8.2.3 3D場景渲染類——GL2JNIView類 269
8.2.4 主控制類——HelloBulletActivity類 271
8.2.5 本地方法聲明及動態(tài)庫加載類——JNIPort類 272
8.2.6 封裝的物體類——TexBody
類 273
8.2.7 矩形繪制類——TextrueRect
類 273
8.2.8 長方體物體類——TexCuboid
類 276
8.2.9 水平地面類——TexPlane類 278
8.2.10 初始化及渲染函數文件——
main.cpp 279
8.3 各式各樣的物體下落 281
8.3.1 案例運行效果 281
8.3.2 圓錐物體類——TexCone類 282
8.3.3 球物體類——TexBall類 284
8.3.4 膠囊物體類——
TexCapsule類 285
8.3.5 圓柱物體類——TexCylinderShape類 287
8.3.6 初始化及渲染函數文件——main.cpp 289
8.4 旋轉的陀螺 290
8.4.1 案例運行效果 290
8.4.2 陀螺物體類——MyCompoundShape類 290
8.4.3 初始化及渲染函數文件——main.cpp 292
8.5 消失的木塊 292
8.5.1 案例運行效果 292
8.5.2 初始化及渲染函數文件——main.cpp 293
8.6 物體碰撞下落 295
8.6.1 案例運行效果 295
8.6.2 初始化及渲染函數文件——main.cpp 296
8.7 關節(jié) 297
8.7.1 關節(jié)的父類——btTypedConstraint類 297
8.7.2 鉸鏈關節(jié)——btHingeConstraint類 297
8.7.3 鉸鏈關節(jié)的案例——球落
門開 299
8.7.4 齒輪關節(jié)——btGearConstraint類 300
8.7.5 齒輪關節(jié)的案例——轉動的齒輪 301
8.7.6 點對點關節(jié)——btPoint2Point Constraint類 302
8.7.7 點對點關節(jié)的案例——懸掛的物體 303
8.7.8 滑動關節(jié)——btSliderConstraint類 304
8.7.9 滑動關節(jié)的案例——六個方向的物體滑動 305
8.7.10 六自由度關節(jié)——btGeneric6
DofConstraint類 308
8.7.11 六自由度關節(jié)的案例——掉
落的蜘蛛 309
8.8 三角形網格形狀類 311
8.8.1 三角形索引數組類——btTriangle IndexVertexArray類 311
8.8.2 層次包圍結構三角形網格形狀類——btBvhTriangleMesh Shape類 312
8.8.3 層次包圍結構三角形網格形狀類的案例——波動的水紋 313
8.9 交通工具類 316
8.9.1 交通工具類——btRaycastVehicle類 317
8.9.2 交通工具的案例——移動的小車 318
8.10 固定三角形網格形狀類 324
8.10.1 固定三角形網格形狀類——
btGImpactMeshShape類 324
8.10.2 固定形狀物體案例 325
8.11 軟體 327
8.11.1 軟體幫助類——btSoftBody
Helps類 327
8.11.2 軟布案例 328
8.11.3 三角形網格軟體案例 331
8.11.4 繩索軟體案例 334
8.12 光線投射回調結構體 336
8.12.1 光線投射回調結構體
ClosestRayResultCallback 336
8.12.2 光線投射的案例——旋轉
光線 337
8.13 小結 339
第9章 骨骼動畫 340
9.1 自己開發(fā)骨骼動畫 340
9.1.1 骨骼動畫的基本原理 340
9.1.2 開發(fā)步驟 343
9.1.3 機器人模型在地面上運動時的問題 348
9.2 ms3d文件的加載 351
9.2.1 ms3d文件的格式 351
9.2.2 將3ds Max動畫文件轉換為ms3d文件 355
9.2.3 Java語言加載ms3d文件案例的開發(fā) 359
9.2.4 C++語言加載ms3d文件案例的開發(fā) 372
9.3 自定義格式骨骼動畫的加載 373
9.3.1 bnggdh文件的格式 373
9.3.2 Bnggdh類 376
9.3.3 加載bnggdh文件的案例 377
9.4 小結 379
第10章 必知必會的開發(fā)技術—— 游戲開發(fā)小貼士 380
10.1 3D拾取技術 380
10.1.1 3D拾取案例效果與基本
原理 380
10.1.2 開發(fā)步驟 382
10.2 多點觸控 386
10.2.1 多點觸控案例效果與基本
原理 386
10.2.2 開發(fā)步驟 387
10.3 多鍵監(jiān)聽 389
10.3.1 案例效果與基本原理 389
10.3.2 開發(fā)步驟 390
10.4 小結 392
第11章 讓應用運行更流暢——
性能優(yōu)化 393
11.1 著色器的優(yōu)化 393
11.1.1 計算量與計算頻率相關的
問題 393
11.1.2 其他需要注意的問題 394
11.2 紋理圖的優(yōu)化 395
11.3 3D圖形繪制的優(yōu)化 396
11.3.1 CPU階段的優(yōu)化 396
11.3.2 幾何階段的優(yōu)化 397
11.3.3 光柵化階段的優(yōu)化 398
11.3.4 使用幀緩沖區(qū)對象時的性能
問題 398
11.3.5 盡量減少狀態(tài)的變化 399
11.4 圖元重啟 399
11.4.1 基本原理 399
11.4.2 一個簡單的案例 400
11.5 幾何體實例渲染 401
11.5.1 基本原理 401
11.5.2 一個簡單的案例 402
11.5.3 基于實例渲染的海量草地 403
11.6 著色器程序的外部加載 406
11.7 計算著色器的使用 409
11.7.1 基本知識 409
11.7.2 動態(tài)法向量光照水面
案例 413
11.8 小結 418
第12章 雜項 419
12.1 遮擋查詢 419
12.1.1 相關方法 419
12.1.2 案例開發(fā)步驟 420
12.2 增強現實基礎 422
12.2.1 基本知識與案例效果 422
12.2.2 一個簡單的案例 423
12.3 保存屏幕圖像 426
12.4 讀取Android系統(tǒng)的GPU參數 428
12.5 多重采樣抗鋸齒 429
12.5.1 基本知識與案例效果 429
12.5.2 一個簡單的案例 430
12.6 小結 431
第13章 Android NDK體育競技
游戲——火力籃球 432
13.1 游戲背景及功能簡述 432
13.1.1 背景概述 432
13.1.2 功能介紹 432
13.2 游戲的策劃及準備工作 434
13.2.1 游戲的策劃 434
13.2.2 Android平臺下游戲開發(fā)的
準備工作 435
13.3 游戲的架構 436
13.3.1 各個類簡要介紹 436
13.3.2 游戲的框架簡介 438
13.4 游戲公共類 439
13.4.1 游戲入口類——BasketBullet Activity 439
13.4.2 場景渲染類——
GL2JNIView 440
13.4.3 本地方法聲明及動態(tài)庫加載
類——JNIPort 442
13.4.4 現實本地方法的相關文件
——jni_code.c 443
13.4.5 現實本地方法的相關文件
——main.cpp 443
13.5 輔助界面相關類 446
13.5.1 著色器管理類——ShaderManager 446
13.5.2 著色器腳本的開發(fā) 448
13.5.3 數據庫工具類——
SQLiteUtil 452
13.5.4 紋理矩形類——
TextureRect 454
13.5.5 游戲資源加載界面類——LoadingView 456
13.5.6 菜單界面類——MenuView 458
13.5.7 記錄界面類——
RecordView 460
13.6 游戲界面相關類 462
13.6.1 游戲界面類——
GameView 462
13.6.2 墻面剛體封裝類——
TexCuboid 467
13.6.3 籃球剛體封裝類——
TexBall 468
13.6.4 任何形狀類——
AnyShapeByVectices 470
13.6.5 任何形狀剛體封裝類——
TexTriangleMesh 473
13.6.6 任何形狀軟體封裝類——
SoftObj 474
13.7 游戲的優(yōu)化及改進 476
第14章 iOS休閑類游戲——方塊翻轉 477
14.1 游戲背景及功能概述 477
14.1.1 游戲背景概述 477
14.1.2 游戲功能介紹 477
14.2 游戲的策劃及準備工作 480
14.2.1 游戲的策劃 480
14.2.2 手機平臺下游戲的準備
工作 480
14.3 游戲的架構 482
14.3.1 各個類簡要介紹 482
14.3.2 游戲框架簡介 484
14.4 界面顯示類 485
14.4.1 GLView類 485
14.4.2 顯示界面類RenderingEngine2 486
14.4.3 游戲界面類GameView 488
14.4.4 幫助界面類HelpView 491
14.5 輔助工具類 493
14.5.1 常量類Constant 493
14.5.2 計算交點坐標輔助類
IntersectantUtil 494
14.6 繪制相關類 495
14.6.1 3D模型繪制類的開發(fā) 495
14.6.2 2D物體繪制類的開發(fā) 500
14.7 游戲的優(yōu)化及改進 501
14.8 小結 502

使用說明

1、下載并解壓,得出pdf文件

2、如果打不開本文件,請務必下載pdf閱讀器

3、安裝后,在打開解壓得出的pdf文件

4、雙擊進行閱讀

收起介紹展開介紹
  • 下載地址
OpenGL ES 3.x 游戲開發(fā)(下卷) 吳亞峰pdf掃描版

有問題? 點此報錯

發(fā)表評論

0條評論