Android 3D游戏开发技术宝典——OpenGL ES 2.0

978-7-115-27770-1
作者: 吴亚峰
译者:
编辑: 张涛

图书目录:

目 录

第 1章 新一代的王者——Android概览 1

1.1 智能手机市场现状 1

1.1.1 五大智能手机操作系统 1

1.1.2 智能手机市场的新星 2

1.2 Android平台的特点及未来的趋势 3

1.2.1 全新理念带来的体验风暴 3

1.2.2 中国手机市场的主导性作用 4

1.2.3 手机3D游戏和应用增长迅速 4

1.3 如何搭建Android开发环境 4

1.3.1 SDK的安装及环境配置 5

1.3.2 Eclipse集成开发环境的搭建 7

1.3.3 创建并启动模拟器 9

1.4 Hello Android应用程序的开发 11

1.4.1 第 一个Android应用程序 12

1.4.2 Android应用程序的项目结构 14

1.4.3 Android应用程序的调试 16

1.4.4 实际设备的联机调试 18

1.5 Android应用程序运行的机制 19

1.5.1 应用程序的系统架构 19

1.5.2 应用程序框架 20

1.5.3 Android运行时 20

1.5.4 系统库 21

1.5.5 底层Linux内核 21

1.6 本章小结 22

第 2章 游戏开发相关Android基础知识 23

2.1 游戏中的音效 23

2.1.1 游戏中的即时音效 23

2.1.2 即时音效的一个案例 24

2.1.3 背景音乐播放技术 27

2.1.4 简易音乐播放器的实现 29

2.2 简单数据的存储——Preferences 33

2.2.1 Preferences简介 33

2.2.2 Preferences实现访问时间的记录 33

2.3 手机自带数据库——SQLite 34

2.3.1 初识SQLite 35

2.3.2 SQLite数据库的基本操作 35

2.3.3 SQLite数据库的简单案例 37

2.3.4 使用ContentProvider组件共享数据 40

2.3.5 使用ContentResolver获取分享数据 42

2.4 文件I/O 43

2.4.1 访问SD卡中的文件 44

2.4.2 访问手机中的文件夹 46

2.4.3 读取assets文件夹下的内容 48

2.5 2D动画的开发 50

2.5.1 SurfaceView用法简介 50

2.5.2 使用SurfaceView实现2D动画 50

2.6 Socket网络通信 56

2.6.1 Socket开发基本知识 56

2.6.2 服务器端 57

2.6.3 客户端 58

2.7 蓝牙通信 59

2.7.1 蓝牙通信的基本知识 60

2.7.2 聊天案例概览 60

2.7.3 聊天案例的开发过程 62

2.8 本章小结 75

第3章 初识OpenGL ES 2.0 77

3.1 OpenGL ES 2.0概览 77

3.1.1 OpenGL ES 2.0简介 77

3.1.2 初识OpenGL ES 2.0应用程序 80

3.2 着色器与渲染管线 89

3.2.1 OpenGL ES 1.x的渲染管线 89

3.2.2 OpenGL ES 2.0的渲染管线 94

3.2.3 OpenGL ES中立体物体的构建 97

3.3 主流Android手机GPU大PK 98

3.3.1 手机GPU四大家族对比 99

3.3.2 主流GPU的性能参数比较 103

3.4 本章小结 104

第4章 着色语言Shading Language 105

4.1 着色语言概述 105

4.2 着色语言基础 106

4.2.1 数据类型概述 106

4.2.2 数据类型的基本使用 110

4.2.3 运算符 112

4.2.4 类型转换 114

4.2.5 限定符 115

4.2.6 流程控制 119

4.2.7 函数的声明与使用 121

4.2.8 片元着色器中浮点变量精度的指定 122

4.2.9 程序的基本结构 123

4.3 特殊的内建变量 123

4.3.1 顶点着色器中的内建变量 124

4.3.2 片元着色器中的内建变量 124

4.4 着色语言的内置函数 125

4.4.1 角度转换与三角函数 126

4.4.2 指数函数 127

4.4.3 常见函数 127

4.4.4 几何函数 130

4.4.5 矩阵函数 132

4.4.6 向量关系函数 133

4.4.7 纹理采样函数 134

4.4.8 微分函数 135

4.5 本章小结 135

第5章 投影及各种变换 136

5.1 摄像机的设置 136

5.2 两种投影方式 137

5.2.1 正交投影 137

5.2.2 透视投影 145

5.3 各种变换 148

5.3.1 基本变换的相关数学知识 148

5.3.2 平移变换 148

5.3.3 旋转变换 152

5.3.4 缩放变换 153

5.3.5 基本变换的实质 155

5.4 绘制方式 156

5.4.1 各种绘制方式概览 156

5.4.2 点与线段绘制方式 157

5.4.3 三角形条带与扇面绘制方式 159

5.4.4 顶点法与索引法 165

5.5 设置合理的视角 167

5.6 卷绕和背面剪裁 173

5.6.1 基本知识 173

5.6.2 一个简单的案例 174

5.7 本章小结 176

第6章 光照 177

6.1 曲面物体的构建 177

6.1.1 球体构建的基本原理 177

6.2.2 案例效果概览 178

6.2.3 开发步骤 179

6.2 基本光照效果 182

6.2.1 光照的基本模型 182

6.2.2 环境光 183

6.2.3 散射光 185

6.2.4 镜面光 190

6.2.5 三种光照通道的合成 194

6.3 定位光与定向光 196

6.4 点法向量和面法向量 199

6.5 光照的每顶点计算与每片元计算 202

6.6 本章小结 204

第7章 纹理映射 205

7.1 初识纹理映射 205

7.1.1 基本原理 205

7.1.2 纹理映射的简单案例 206

7.2 纹理拉伸 212

7.2.1 两种拉伸方式概览 212

7.2.2 不同拉伸方式的案例 214

7.3 纹理采样 217

7.3.1 纹理采样概述 217

7.3.2 **近点采样 218

7.3.3 线性纹理采样 219

7.3.4 MIN与MAG采样 220

7.3.5 不同纹理采样方式的案例 221

7.4 mipmap纹理技术 226

7.5 多重纹理与过程纹理 227

7.5.1 案例概览 227

7.5.2 将2D纹理映射到球面上的策略 228

7.5.3 案例的场景结构 229

7.5.4 开发过程 230

7.6 本章小结 238

第8章 3D基本形状的构建 239

8.1 圆柱体 239

8.1.1 顶点原始位置的生成 239

8.1.2 案例的开发 241

8.2 圆锥体 244

8.2.1 顶点原始位置的生成 244

8.2.2 案例的开发 246

8.3 圆环体 248

8.3.1 顶点原始位置的生成 248

8.3.2 案例的开发 249

8.4 螺旋管 251

8.4.1 顶点原始位置的生成 252

8.4.2 案例的开发 252

8.5 几何球 253

8.5.1 顶点原始位置的生成 254

8.5.2 案例的开发 255

8.6 足球碳分子模型的搭建 262

8.6.1 搭建的基本原理 262

8.6.2 案例的开发 264

8.7 贝塞尔曲线及旋转面 270

8.7.1 三维旋转曲面的生成 270

8.7.2 贝塞尔曲线 270

8.7.3 Bezier曲线生成工具 272

8.7.4 印度古典建筑场景的开发 274

8.8 本章小结 276

第9章 3D模型加载 277

9.1 obj模型文件概览 277

9.1.1 obj文件的格式 277

9.1.2 用3DMax设计3D模型 278

9.2 加载obj文件 279

9.2.1 加载仅有顶点坐标与面数据的obj文件 279

9.2.2 加载后自动计算面法向量 283

9.2.3 加载后自动计算平均法向量 286

9.2.4 加载纹理坐标 289

9.3 本章小结 292

第 10章 混合与雾 293

10.1 混合技术 293

10.1.1 混合基本知识 293

10.1.2 源因子和目标因子 294

10.1.3 简单混合效果案例 295

10.2 地月系云层效果的实现 297

10.3 雾 300

10.3.1 雾的原理与优势 300

10.3.2 雾的简单实现 301

10.4 本章小结 304

第 11章 常用3D开发技巧 305

11.1 标志板 305

11.1.1 案例效果与基本原理 305

11.1.2 开发步骤 306

11.2 灰度图地形 310

11.2.1 基本原理 311

11.2.2 普通灰度图地形 311

11.2.3 过程纹理地形 314

11.2.4 MipMap地形 317

11.3 天空盒与天空穹 318

11.3.1 天空盒 318

11.3.2 天空穹 320

11.3.3 天空盒与天空穹的使用技巧 321

11.4 镜像技术 322

11.4.1 镜像基本原理 322

11.4.2 基本效果案例 322

11.4.3 升级效果案例 325

11.5 动态文本输出 327

11.5.1 案例效果与基本原理 327

11.5.2 具体开发步骤 328

11.6 非真实感绘制 330

11.6.1 案例效果与基本原理 330

11.6.2 具体开发步骤 331

11.7 本章小结 332

第 12章 几种剪裁与测试 333

12.1 剪裁测试 333

12.1.1 基本原理与核心代码 333

12.1.2 一个主次视角的简单案例 334

12.2 Alpha测试 335

12.2.1 Alpha测试基本原理 335

12.2.2 一个椭圆窗口的案例 335

12.3 模板测试 337

12.3.1 基本原理 337

12.3.2 一个简单的案例 340

12.4 任意剪裁平面 341

12.4.1 基本原理 341

12.4.2 茶壶被任意平面剪裁的案例 342

12.5 本章小结 344

第 13章 顶点着色器的妙用 345

13.1 飘扬的旗帜 345

13.1.1 基本原理 345

13.1.2 开发步骤 346

13.2 扭动的软糖 349

13.2.1 基本原理 349

13.2.2 开发步骤 350

13.3 风吹椰林场景的开发 351

13.3.1 椰子树随风摇摆的基本原理 351

13.3.2 开发步骤 352

13.4 展翅飞翔的雄鹰 356

13.4.1 基本原理 356

13.4.2 开发步骤 357

13.5 二维扭曲 359

13.5.1 基本原理 359

13.5.2 开发步骤 360

13.6 OpenGL ES 1.x与OpenGL ES 2.0实现方案的对比 363

13.7 本章小结 364

第 14章 片元着色器的妙用 365

14.1 程序纹理技术 365

14.1.1 砖块着色器 365

14.1.2 沙滩球着色器 367

14.2 数字图像处理 368

14.2.1 卷积的基本知识 369

14.2.2 平滑过滤 369

14.2.3 边缘检测 371

14.2.4 锐化处理 372

14.2.5 浮雕效果 373

14.2.6 图像渐变 374

14.3 分形着色器 375

14.3.1 曼德布罗集简介 375

14.3.2 曼德布罗集着色器的实现 376

14.3.3 将曼德布罗集纹理应用到实际物体上 378

14.3.4 茱莉亚集着色器的实现 379

14.4 本章小结 380

第 15章 真实光学环境的模拟 381

15.1 投影贴图 381

15.1.1 案例效果与基本原理 381

15.1.2 开发步骤 382

15.2 反射环境模拟 385

15.2.1 案例效果与基本原理 385

15.2.2 开发步骤 386

15.3 折射环境模拟 388

15.3.1 案例效果与基本原理 388

15.3.2 开发步骤 390

15.4 色散效果的模拟 391

15.4.1 案例效果与基本原理 391

15.4.2 开发步骤 392

15.5 菲涅尔效果的模拟 393

15.5.1 案例效果与基本原理 393

15.5.2 开发步骤 394

15.6 凹凸映射 395

15.6.1 案例效果与基本原理 395

15.6.2 法向量纹理图的生成 396

15.6.3 案例的开发 399

15.7 平面阴影 404

15.7.1 案例效果与基本原理 405

15.7.2 开发步骤 406

15.8 阴影映射 409

15.8.1 案例效果与基本原理 409

15.8.2 距离纹理图的生成 411

15.8.3 阴影场景的绘制 417

15.9 光线跟踪 419

15.9.1 案例效果与基本原理 419

15.9.2 开发步骤 423

15.10 本章小结 436

第 16章 游戏开发中的物理学 437

16.1 碰撞检测基本技术 437

16.1.1 AABB包围盒的基本原理 437

16.1.2 AABB包围盒的计算 438

16.1.3 AABB包围盒的碰撞检测 440

16.1.4 一个AABB包围盒的案例 442

16.1.5 旋转后的AABB包围盒 444

16.1.6 AABB包围盒的使用要点 448

16.1.7 OBB包围盒 448

16.2 穿透效应 449

16.2.1 案例的运行效果与基本原理 449

16.2.2 具体开发步骤 450

16.3 粒子系统 450

16.3.1 案例运行效果与基本原理 451

16.3.2 CPU版案例的开发 452

16.3.3 GPU版案例开发步骤 453

16.4 弹簧质点模型 455

16.4.1 案例运行效果与基本原理 455

16.4.2 具体开发步骤 457

16.5 本章小结 462

第 17章 游戏的心脏——物理引擎 463

17.1 物理引擎很重要 463

17.1.1 什么是物理引擎 463

17.1.2 常见的物理引擎 463

17.2 JBullet物理引擎 466

17.2.1 基本的物理学概念 466

17.2.2 JBullet中常用类的介绍 468

17.3 箱子相互碰撞的案例 475

17.3.1 案例运行效果及准备工作 476

17.3.2 案例的基本框架结构 476

17.3.3 常量类——Constant 477

17.3.4 3D场景渲染类——MySurfaceView 478

17.3.5 水平地面——TexFloor类 480

17.3.6 箱子——TexCube类 481

17.4 复合碰撞形状的使用 483

17.4.1 案例运行效果 483

17.4.2 立方体圆柱复合形状——CubeCylinder类 483

17.5 凹凸地形的案例 486

17.5.1 案例运行效果 486

17.5.2 地形类——LandForm 486

17.6 任意形状物体的碰撞 488

17.6.1 案例运行效果 488

17.6.2 加载物体类——LoadedObjectVertexNormal 488

17.6.3 加载物体刚体类——LoadRigidBody 490

17.7 铰链关节 491

17.7.1 铰链关节的基本知识 491

17.7.2 案例的运行效果 492

17.7.3 铰链关节旋转角速度的计算 493

17.7.4 3D界面渲染类——MySurfaceView 494

17.8 滑动关节 496

17.8.1 滑动关节的基本知识 496

17.8.2 案例效果图 497

17.8.3 3D界面渲染类——MySurfaceView 498

17.9 六自由度关节 502

17.9.1 六自由度关节的基本知识 502

17.9.2 案例的运行效果 503

17.9.3 人偶类——Doll 503

17.9.4 拾取时采用的点对点关节 505

17.10 本章小结 509

第 18章 传感器应用的开发 510

18.1 基本的开发流程 510

18.2 加速度传感器 512

18.2.1 加速度传感器简介 513

18.2.2 案例的开发 514

18.3 磁场传感器 514

18.3.1 磁场传感器简介 514

18.3.2 案例的开发 514

18.4 光传感器 516

18.4.1 光传感器简介 516

18.4.2 案例的开发 516

18.5 温度传感器 518

18.5.1 温度传感器简介 518

18.5.2 案例的开发 518

18.6 接近传感器 519

18.6.1 接近传感器简介 519

18.6.2 案例的开发 520

18.7 姿态传感器 521

18.7.1 姿态传感器简介 521

18.7.2 案例的开发 522

18.8 本章小结 528

第 19章 游戏开发小贴士 529

19.1 3D拾取技术 529

19.1.1 案例效果与基本原理 529

19.1.2 开发步骤 531

19.2 多点触控 537

19.2.1 案例效果与基本原理 537

19.2.2 开发步骤 538

19.3 多键监听 541

19.3.1 案例效果与基本原理 541

19.3.2 开发步骤 542

19.4 本章小结 544

第 20章 BN赛艇 545

20.1 游戏背景及功能概述 545

20.1.1 背景概述 545

20.1.2 功能介绍 545

20.2 游戏的策划及准备工作 547

20.2.1 游戏的策划 547

20.2.2 Android平台下游戏的准备工作 548

20.3 游戏的架构 552

20.3.1 各个类简要介绍 553

20.3.2 游戏框架简介 558

20.4 主控制类MyActivity 559

20.5 2D界面相关类 563

20.5.1 欢迎界面类WelcomeView 563

20.5.2 2D界面父类MySFView 565

20.5.3 主菜单类MenuView 565

20.5.4 2D界面绘制类ViewForDraw 566

20.5.5 数据库工具类DBUtil 568

20.5.6 Android系统版本对话框AndroidVersionDialog 570

20.6 选船界面相关类 570

20.6.1 着色器管理类ShaderManager 571

20.6.2 围墙类ColorLightRect 571

20.6.3 选船房间类HouseForDraw 573

20.6.4 展台类DisplayStation 575

20.6.5 赛艇类Boat 576

20.6.6 选船界面XCSurfaceView 576

20.7 游戏界面相关类 582

20.7.1 进度条类Process 583

20.7.2 3D物体父类BNDrawer 584

20.7.3 3D物体控制类TDObjectForControl 584

20.7.4 赛艇类Boat 585

20.7.5 可碰撞物体父类KZBJDrawer 586

20.7.6 可碰撞物体控制类KZBJForControl 587

20.7.7 赛艇与可碰撞物体检测碰撞线程ThreadColl 589

20.7.8 可吃物体父类SpeedForEat 590

20.7.9 可吃物体控制类SpeedForControl 590

20.7.10 晶体旋转线程RotateThread 592

20.7.11 赛艇与晶体碰撞检测线程ThreadForEat 592

20.7.12 比较两灌木距离摄像机距离类MyComparable 593

20.7.13 单个灌木类SingleShrub 594

20.7.14 灌木控制类ShrubForControl 595

20.7.15 赛艇赛道类RaceTrack 596

20.7.16 赛艇与桥碰撞检测类PZZ 598

20.7.17 赛艇运动路线工具类PathUtil 598

20.7.18 尾浪类WeiLang 599

20.7.19 水面类Water 600

20.7.20 游戏界面类MyGLSurfaceView 601

20.7.21 运动监听线程KeyThread 611

20.8 该游戏中的着色器 613

20.9 游戏的优化与改进 615

第 21章 火力篮球 616

21.1 游戏背景及功能概述 616

21.1.1 背景概述 616

21.1.2 功能介绍 616

21.2 游戏的策划及准备工作 618

21.2.1 游戏的策划 618

21.2.2 Android平台下游戏开发的准备工作 619

21.3 游戏的架构 620

21.3.1 各个类简要介绍 620

21.3.2 游戏框架简介 623

21.4 公共类BasketBall_Shot_Activity 624

21.5 辅助界面相关类 631

21.5.1 主菜单界面CaiDanView类 631

21.5.2 设置界面ShengyinKGJiemian类 636

21.5.3 关于界面GuanYuView类 640

21.5.4 记录界面JiLuView类 644

21.5.5 数据库相关类SQLiteUtil 650

21.6 游戏界面相关类 651

21.6.1 游戏界面绘制类GLGameView 651

21.6.2 着色器程序管理器类ShaderManager 668

21.6.3 添加刚体进物理世界类TianjiaBody 669

21.6.4 添加胶囊刚体进物理世界类JiaoNangTianjiaBody 670

21.6.5 篮球控制类BasketBallForDraw 671

21.6.6 纹理矩形绘制类WenLiJuXing 672

21.7 游戏中着色器的开发 674

21.7.1 纹理的着色器 674

21.7.2 光照着色器 675

21.7.3 影子着色器 677

21.7.4 仪表盘背景着色器 679

21.7.5 篮网着色器 680

21.8 游戏的优化与改进 681

第 22章 夜鹰行动 682

22.1 游戏背景及功能概述 682

22.1.1 背景概述 682

22.1.2 功能介绍 682

22.2 游戏的策划及准备工作 685

22.2.1 游戏的策划 686

22.2.2 Android平台下游戏开发的准备工作 686

22.3 游戏的架构 690

22.3.1 各个类的简要介绍 690

22.3.2 游戏框架简介 694

22.4 公共类Aircraft_Activity 695

22.5 游戏相关类 698

22.5.1 游戏界面绘制类GLGameView 698

22.5.2 游戏线程类KeyThread 712

22.5.3 子弹类BulletForControl 726

22.5.4 坦克类TanKe 732

22.5.5 山地绘制类LandForm 737

22.5.6 颜色圆面类CircleForDraw 739

22.5.7 星空类SkyNight 740

22.5.8 爆炸效果绘制类DrawBomb 742

22.5.9 数字绘制类NumberForDraw 743

22.6 该游戏中的着色器 744

22.6 .1 加载界面着色器 744

22.6.2 地形着色器 745

22.6.3 按钮着色器 747

22.6.4 星空着色器 748

22.6.5 生命值矩形着色器 748

22.6.6 颜色圆面着色器 748

22.7 游戏的优化与改进 749

详情

通过对10个大型的详细讲解,让读者学会如何驾驭复杂的应用程序,这些特性是目前市面上的一些书籍所没有的。本书中的大型案例均来源于真实的产品,100%原创。


图书摘要

相关图书

Android App开发入门与实战
Android App开发入门与实战
Kotlin入门与实战
Kotlin入门与实战
Android 并发开发
Android 并发开发
Android APP开发实战——从规划到上线全程详解
Android APP开发实战——从规划到上线全程详解
Android应用案例开发大全( 第4版)
Android应用案例开发大全( 第4版)
深入理解Android内核设计思想(第2版)(上下册)
深入理解Android内核设计思想(第2版)(上下册)

相关文章

相关课程