《OpenGL ES 2.0游戏开发 下 高级特效和典型案例》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:吴亚峰著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115344694
  • 页数:392 页
图书介绍:通过案例详细讲解了OpenGL的应用,让读者学会如何驾驭复杂的应用程序,这些特性是目前市面上的一些书籍所没有的。本书中的大型案例均来源于真实的产品,100%原创,读者可以学以致用的尽快进入实战角色。本书通俗易懂,很适合读者开发项目中应用。

第1章 顶点着色器的妙用 1

1.1飘扬的旗帜 1

1.1.1基本原理 1

1.1.2开发步骤 2

1.2扭动的软糖 4

1.2.1基本原理 4

1.2.2开发步骤 5

1.3风吹椰林场景的开发 6

1.3.1椰子树随风摇摆的基本原理 6

1.3.2开发步骤 7

1.4展翅飞翔的雄鹰 10

1.4.1基本原理 10

1.4.2开发步骤 11

1.5二维扭曲 13

1.5.1基本原理 13

1.5.2开发步骤 14

1.6吹气膨胀特效 16

1.6.1特效基本原理 16

1.6.2特效开发步骤 17

1.7 OpenGL ES 1.x与OpenGL ES 2.0实现方案的对比 18

1.8本章小结 19

第2章 片元着色器的妙用 20

2.1程序纹理技术 20

2.1.1砖块着色器 20

2.1.2沙滩球着色器 22

2.2数字图像处理 23

2.2.1卷积的基本知识 23

2.2.2平滑过滤 24

2.2.3边缘检测 25

2.2.4锐化处理 26

2.2.5浮雕效果 26

2.2.6图像渐变 28

2.3分形着色器 28

2.3.1曼德布罗集简介 29

2.3.2曼德布罗集着色器的实现 29

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

2.3.4茱莉亚集着色器的实现 32

2.4体积雾 33

2.4.1基本原理 33

2.4.2体积雾开发步骤 34

2.5粒子系统火焰的开发 36

2.5.1火焰的基本原理 36

2.5.2火焰的开发步骤 38

2.6本章小结 44

第3章 真实光学环境的模拟 45

3.1反射环境模拟 45

3.1.1案例效果与基本原理 45

3.1.2反射环境开发步骤 46

3.2折射环境模拟 48

3.2.1案例效果与基本原理 48

3.2.2开发步骤 49

3.3色散效果的模拟 50

3.3.1案例效果与基本原理 51

3.3.2开发步骤 51

3.4菲涅尔效果的模拟 52

3.4.1案例效果与基本原理 52

3.4.2菲涅尔效果开发步骤 53

3.5凹凸映射 54

3.5.1案例效果与基本原理 54

3.5.2法向量纹理图的生成 55

3.5.3案例的开发 58

3.6真实感很强的地形 61

3.6.1真实感地形的基本原理 62

3.6.2真实感地形的开发步骤 62

3.7本章小结 65

第4章 阴影及高级光照 66

4.1投影贴图 66

4.1.1投影案例效果与基本原理 66

4.1.2开发步骤 67

4.2阴影的重要性 69

4.3平面阴影 71

4.3.1平面阴影案例效果与基本原理 71

4.3.2平面阴影开发步骤 72

4.4阴影映射 74

4.4.1阴影映射案例效果与基本原理 75

4.4.2距离纹理图的生成 76

4.5.3阴影场景的绘制 81

4.5阴影贴图 83

4.5.1阴影贴图案例效果与基本原理 83

4.5.2阴影贴图开发步骤 84

4.6聚光灯高级光源 85

4.6.1聚光灯高级光源案例效果与基本原理 85

4.6.2聚光灯高级光源开发步骤 86

4.7光线跟踪 87

4.7.1光线跟踪案例效果与基本原理 88

4.7.2光线跟踪开发步骤 91

4.8真实感水面倒影 100

4.8.1水面倒影的基本原理 101

4.8.2水面倒影的开发步骤 102

4.9本章小结 107

第5章 让游戏更真实——游戏开发中的物理学 108

5.1碰撞检测基本技术 108

5.1.1 AABB包围盒的基本原理 108

5.1.2 AABB包围盒的计算 109

5.1.3 AABB包围盒的碰撞检测 110

5.1.4一个AABB包围盒的案例 112

5.1.5旋转后的AABB包围盒 113

5.1.6 AABB包围盒的使用要点 117

5.1.7 OBB包围盒 117

5.2穿透效应 118

5.2.1案例的运行效果与基本原理 118

5.2.2具体开发步骤 119

5.3粒子系统 119

5.3.1案例运行效果与基本原理 119

5.3.2 CPU版案例的开发 120

5.3.3 GPU版案例开发步骤 122

5.4弹簧质点模型模拟旗帜 123

5.4.1弹簧质点模型基本原理 123

5.4.2弹簧质点模型案例的运行效果及开发步骤 124

5.5弹簧质点模型模拟球网 133

5.5.1弹簧质点模型的基本原理 133

5.5.2弹簧质点模型的案例的运行效果及开发步骤 133

5.6本章小结 135

第6章 游戏的心脏——物理引擎 136

6.1物理引擎很重要 136

6.1.1什么是物理引擎 136

6.1.2常见的物理引擎 136

6.2 JBullet物理引擎概览 139

6.2.1基本的物理学概念 139

6.2.2 JBullet中常用类的介绍 140

6.3箱子相互碰撞的案例 147

6.3.1案例运行效果及准备工作 147

6.3.2案例的基本框架结构 148

6.3.3常量类——Constant 149

6.3.4 3D场景渲染类——MySurfaceView 149

6.3.5水平地面——TexFloor类 151

6.3.6箱子——TexCube类 152

6.4复合碰撞形状的使用 153

6.4.1案例运行效果 153

6.4.2立方体圆柱复合形状——CubeCylinder类 154

6.5凹凸地形的案例 155

6.5.1案例运行效果 155

6.5.2地形类——LandForm 156

6.6任意形状物体的碰撞 157

6.6.1案例运行效果 157

6.6.2加载物体类——LoadedObjectVertexNormal 157

6.6.3加载物体刚体类——LoadRigidBody 158

6.7铰链关节 159

6.7.1铰链关节的基本知识 160

6.7.2铰链关节案例的运行效果 160

6.7.3铰链关节旋转角速度的计算 161

6.7.4 3D界面渲染类——MySurfaceView 162

6.8滑动关节 164

6.8.1滑动关节的基本知识 164

6.8.2案例效果图 165

6.8.3 3D界面渲染类——MySurfaceView 165

6.9六自由度关节 168

6.9.1六自由度关节的基本知识 168

6.9.2六自由度关节案例的运行效果 169

6.9.3人偶类——Doll 170

6.9.4拾取时采用的点对点关节 171

6.10交通工具 174

6.10.1交通工具开发要点 174

6.10.2交通工具案例的运行效果 176

6.10.3 3D场景渲染类——MySurfaceView 176

6.10.4汽车类——Car 178

6.10.5汽车绘制类——VehicleDraw 182

6.11Bullet物理引擎概览 183

6.11.1 Bullet物理引擎案例的运行效果 184

6.11.2 3D场景渲染类——GL2JNIView 184

6.11.3本地方法声明及动态库加载类——JNIPort 186

6.11.4初始化及渲染函数文件——main.cpp 187

6.11.5水平地面类——TexPlane 189

6.11.6箱子类——TexCube 192

6.12 Bullet软体 193

6.12.1 Bullet软件案例运行效果 193

6.12.2初始化及渲染函数文件——main.cpp 194

6.12.3软体类——SoftCloth 195

6.13本章小结 197

第7章 让游戏主角的动作更丰富——骨骼动画 198

7.1自己开发骨骼动画 198

7.1.1骨骼动画的基本原理 198

7.1.2骨骼动画开发步骤 201

7.1.3机器人模型在地面上运动时的问题 206

7.2 ms3d文件的加载 210

7.2.1 ms3d文件的格式 210

7.2.2案例的开发 213

7.3本章小结 227

第8章 必知必会的开发技术——游戏开发小贴士 228

8.1 3D拾取技术 228

8.1.1 3D拾取案例效果与基本原理 228

8.1.2开发步骤 230

8.2多点触控 234

8.2.1多点触控案例效果与基本原理 234

8.2.2开发步骤 235

8.3多键监听 237

8.3.1案例效果与基本原理 238

8.3.2开发步骤 238

8.4本章小结 240

第9章 让应用运行更流畅——性能优化 241

9.1着色器的优化 241

9.1.1计算量与计算频率相关的问题 241

9.1.2其他需要注意的问题 242

9.2纹理图的优化 243

9.3 3D图形绘制的优化 244

9.3.1 CPU阶段的优化 244

9.3.2几何阶段的优化 245

9.3.3光栅化阶段的优化 247

9.3.4尽量减少状态的变化 247

9.4本章小结 247

第10章 综合案例一——火力篮球 248

10.1游戏背景及功能概述 248

10.1.1游戏背景概述 248

10.1.2游戏功能介绍 248

10.2游戏的策划及准备工作 250

10.2.1游戏的策划 250

10.2.2 Android平台下游戏开发的准备工作 250

10.3游戏的架构 252

10.3.1各个类简要介绍 252

10.3.2游戏框架简介 254

10.4公共类BasketBall_Shot_Activity 255

10.5辅助界面相关类 261

10.5.1主菜单界面CaiDanView类 261

10.5.2设置界面ShengyinKGJiemian类 265

10.5.3关于界面GuanYuView类 268

10.5.4记录界面JiLuView类 271

10.5.5数据库相关类SQLiteUtil 275

10.6游戏界面相关类 277

10.6.1游戏界面绘制类GLGameView 277

10.6.2着色器程序管理器类ShaderManager 290

10.6.3添加刚体进物理世界类Tianj iaBody 291

10.6.4添 加胶囊刚体进物理世界类JiaoNangTianjiaBody 291

10.6.5篮球控制类BasketBallForDraw 292

10.6.6纹理矩形绘制类WenLiJuXing 293

10.7游戏中着色器的开发 295

10.7.1纹理的着色器 295

10.7.2光照着色器 295

10.7.3影子着色器 297

10.7.4仪表盘背景着色器 299

10.7.5篮网着色器 299

10.8游戏的优化与改进 300

第11章 综合案例二——3D虚拟停车场 301

11.1游戏开发背景及功能概述 301

11.1.1游戏开发背景 301

11.1.2游戏功能介绍 301

11.2游戏的策划及准备工作 303

11.2.1游戏的策划 303

11.2.2 Android平台下游戏开发的准备工作 304

11.3游戏的架构 305

11.3.1各个类简要介绍 305

11.3.2游戏框架简介 308

11.4常量及公共类 308

11.4.1游戏主控类GameActivity 309

11.4.2游戏常量类Constant 312

11.5界面相关类 313

11.5.1游戏欢迎界面类Welcome View 313

11.5.2主菜单类MainInterSurfaceView 315

11.5.3选择界面类SelectVehicleLevelView 319

11.5.4游戏界面类GameSurfaceView 323

11.6交通工具相关类及接口 334

11.6.1交通工具接口Vehicle 335

11.6.2交通工具类Car 01 335

11.7物体绘制相关类 340

11.7.1纹理矩形绘制类TextureTextangle 340

11.7.2交通工具绘制类VehicleDraw 342

11.7.3路障类Roadblock 343

11.7.4停车点类ParkPlace 344

11.7.5关卡加载及绘制类LevelLoad 345

11.7.6路面绘制类TexFloor 346

11.7.7动态按钮类Button 348

11.7.8方向盘类Streering 349

11.7.9控制部件绘制类Control 352

11.8游戏中的着色器开发 353

11.9游戏的优化与改进 355

第12章 综合案例三——WebGL模拟飞行 356

12.1游戏背景及功能概述 356

12.1.1游戏背景概述 356

12.1.2游戏功能介绍 356

12.2游戏的策划及准备工作 357

12.2.1游戏的策划 358

12.2.2 Web平台下游戏的准备工作 358

12.2.3 Obj模型加载工具介绍 359

12.3游戏的架构 361

12.3.1游戏中各个类简要介绍 361

12.3.2游戏框架简介 362

12.4游戏公共函数介绍 363

12.4.1工具函数文件GLUtil.js 363

12.4.2矩阵操作函数文件MatrixState.js 365

12.5山地控制及绘制相关函数 366

12.5.1无边界地形的控制及绘制原理 366

12.5.2无边界山地地形绘制函数文件MountainMap.js 368

12.5.3单位山地地形绘制函数文件MountainDraw.js 369

12.6物体控制相关函数介绍 370

12.6.1碰撞检测策略讲解 370

12.6.2飞机绘制及控制文件Airplane.js 371

12.6.3飞机绘制及控制文件Meter.js 375

12.6.4爆炸动画绘制函数文件BoomPlay .js 376

12.7物体绘制相关函数介绍 377

12.7.1山地绘制函数文件Mountain.js 377

12.7.2水面绘制文件WaterRect.js 379

12.7.3纹理矩形绘制文件Rectangledraw.js 380

12.7.4其他物体绘制文件ObjObject.js 381

12.8游戏页面文件planeGame.htm介绍 382

12.9游戏中运用的着色器介绍 386

12.9.1普通物体着色器 386

12.9.2山地地形着色器 388

12.9.3水面矩形着色器 391

12.10游戏的优化与改进 392