《OpenGL ES 2.0游戏开发 上卷 基础技术和典型案例》PDF下载

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

第1章 初识庐山真面目——Android概览 1

1.1智能手机市场现状 1

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

1.1.2智能手机市场的新星 1

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

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

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

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

1.3如何搭建Android开发环境 3

1.3.1 JDK的安装及环境配置 3

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

1.3.3创建并启动模拟器 6

1.4 Hello Android应用程序的开发 9

1.4.1第一个Android应用程序 9

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

1.4.3 Android应用程序的调试 13

1.4.4实际设备的联机调试 15

1.5已有Android项目的导入和运行 15

1.5.1项目的导入 15

1.5.2应用程序的运行 16

1.6 Android应用程序运行的机制 16

1.6.1应用程序的系统架构 17

1.6.2应用程序框架 17

1.6.3 Android运行时 18

1.6.4系统库 18

1.6.5底层Linux内核 19

1.7本章小结 19

第2章 游戏开发相关Android知识——音效、存储、蓝牙等 20

2.1游戏中的音效 20

2.1.1游戏中的即时音效 20

2.1.2即时音效的一个案例 21

2.1.3背景音乐播放技术 23

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

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

2.2.1 Preferences简介 28

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

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

2.3.1初识SQLite 29

2.3.2 SQLite数据库的基本操作 30

2.3.3 SQLite数据库的简单案例 31

2.3.4使用ContentProvider组件共享数据 34

2.3.5使用ContentResolver获取分享数据 35

2.4文件1/O 37

2.4.1访问SD卡中的文件 37

2.4.2访问手机中的文件夹 38

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

2.5 2D动画的开发 41

2.5.1 SurfaceView用法简介 42

2.5.2使用SurfaceView实现2D动画 42

2.6 Socket网络通信 47

2.6.1 Socket开发基本知识 47

2.6.2服务器端 47

2.6.3客户端 48

2.7蓝牙通信 49

2.7.1蓝牙通信的基本知识 49

2.7.2聊天案例概览 50

2.7.3聊天案例的开发过程 51

2.8本章小结 62

第3章 初识OpenGL ES 2.0 63

3.1 OpenGL ES 2.0概述 63

3.1.1 OpenGL ES 2.0简介 63

3.1.2初识OpenGL ES 2.0应用程序 66

3.2着色器与渲染管线 74

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

3.2.2 OpenGL ES 2.0的渲染管线 78

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

3.3主流Android手机GPU大比拼 82

3.3.1手机GPU四大家族对比 82

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

3.4本章小结 87

第4章 着色语言 88

4.1着色语言(Shading Language)概述 88

4.2着色语言基础 88

4.2.1数据类型概述 89

4.2.2数据类型的基本使用 93

4.2.3运算符 94

4.2.4类型转换 96

4.2.5限定符 97

4.2.6流程控制 100

4.2.7函数的声明与使用 102

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

4.2.9程序的基本结构 103

4.3特殊的内建变量 104

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

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

4.4着色语言的内置函数 105

4.4.1角度转换与三角函数 106

4.4.2指数函数 106

4.4.3常见函数 107

4.4.4几何函数 110

4.4.5矩阵函数 111

4.4.6向量关系函数 112

4.4.7纹理采样函数 112

4.4.8微分函数 113

4.5用invariant修饰符避免值变问题 114

4.6本章小结 115

第5章 必知必会的3D开发知识——投影及各种变换 116

5.1摄像机的设置 116

5.2两种投影方式 117

5.2.1正交投影 117

5.2.2透视投影 123

5.3各种变换 126

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

5.3.2平移变换 126

5.3.3旋转变换 129

5.3.4缩放变换 130

5.3.5基本变换的实质 131

5.4所有变换的完整流程 132

5.5绘制方式 135

5.5.1各种绘制方式概览 135

5.5.2点与线段绘制方式 137

5.5.3三角形条带与扇面 138

5.5.4顶点法与索引法 142

5.6设置合理的视角 144

5.7卷绕和背面剪裁 149

5.7.1基本知识 149

5.7.2一个简单的案例 150

5.8本章小结 152

第6章 让场景更逼真——光照效果 153

6.1曲面物体的构建 153

6.1.1球体构建的基本原理 153

6.1.2案例效果概览 154

6.1.3开发步骤 154

6.2基本光照效果 157

6.2.1光照的基本模型 157

6.2.2环境光 158

6.2.3散射光 159

6.2.4镜面光 163

6.2.5三种光照通道的合成 167

6.3定位光与定向光 168

6.4点法向量和面法向量 171

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

6.6本章小结 175

第7章 更加酷炫的3D效果——纹理映射 176

7.1初识纹理映射 176

7.1.1基本原理 176

7.1.2纹理映射的简单案例 177

7.2纹理拉伸 182

7.2.1两种拉伸方式概览 182

7.2.2不同拉伸方式的案例 183

7.3纹理采样 186

7.3.1纹理采样概述 186

7.3.2最近点采样 186

7.3.3线性纹理采样 187

7.3.4 MIN与MAG采样 189

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

7.4 mipmap纹理技术 193

7.5多重纹理与过程纹理 194

7.5.1案例概览 194

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

7.5.3案例的场景结构 196

7.5.4开发过程 197

7.6压缩纹理的使用 203

7.7本章小结 205

第8章 丰富的立体形状——3D基本形状的构建 206

8.1圆柱体 206

8.1.1顶点原始位置的生成 206

8.1.2案例的开发 208

8.2圆锥体 210

8.2.1顶点原始位置的生成 210

8.2.2案例的开发 212

8.3圆环体 213

8.3.1顶点原始位置的生成 213

8.3.2案例的开发 214

8.4螺旋管 216

8.4.1顶点原始位置的生成 216

8.4.2案例的开发 217

8.5几何球 218

8.5.1顶点原始位置的生成 218

8.5.2案例的开发 220

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

8.6.1搭建的基本原理 225

8.6.2案例的开发 227

8.7贝塞尔曲线及旋转面 229

8.7.1三维旋转曲面的生成 230

8.7.2贝塞尔曲线 230

8.7.3 Bezier曲线生成工具 231

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

8.8本章小结 234

第9章 更逼真的游戏场景——3D模型加载 235

9.1 obj模型文件概述 235

9.1.1 obj文件的格式 235

9.1.2用3ds Max设计3D模型 236

9.2加载obj文件 237

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

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

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

9.2.4加载纹理坐标 245

9.3本章小结 247

第10章 独特的场景渲染技术——混合与雾 248

10.1混合技术 248

10.1.1混合基本知识 248

10.1.2源因子和目标因子 249

10.1.3简单混合效果案例 250

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

10.3雾 254

10.3.1雾的原理与优势 254

10.3.2雾的简单实现 255

10.4本章小结 257

第11章 常用的3D开发技巧——标志板、天空盒、镜像绘制等 258

11.1标志板 258

11.1.1案例效果与基本原理 258

11.1.2开发步骤 259

11.2灰度图地形 262

11.2.1基本原理 263

11.2.2普通灰度图地形 263

11.2.3过程纹理地形 265

11.2.4 MipMap地形 268

11.3用粒子沉积算法构建地形 269

11.3.1粒子沉积法基本原理 269

11.3.2地形设计器的使用 271

11.3.3粒子沉积的核心算法类 272

11.4天空盒与天空穹 274

11.4.1天空盒 274

11.4.2天空穹 275

11.4.3天空盒与天空穹的使用技巧 277

11.5镜像技术 277

11.5.1镜像基本原理 277

11.5.2基本效果案例 277

11.5.3升级效果案例 280

11.6动态文本输出 281

11.6.1案例效果与基本原理 281

11.6.2具体开发步骤 282

11.7非真实感绘制 283

11.7.1案例效果与基本原理 284

11.7.2具体开发步骤 284

11.8本章小结 286

第12章 渲染出更加酷炫的3D场景——剪裁测试 287

12.1剪裁测试 287

12.1.1基本原理与核心代码 287

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

12.2 Alpha测试 288

12.2.1 Alpha测试基本原理 289

12.2.2一个椭圆窗口的案例 289

12.3模板测试 290

12.3.1基本原理 291

12.3.2一个简单的案例 293

12.4任意剪裁平面 294

12.4.1基本原理 294

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

12.5本章小结 296

第13章 引人入胜的游戏特性——传感器应用开发 297

13.1基本的开发流程 297

13.2加速度传感器 299

13.2.1加速度传感器简介 299

13.2.2案例的开发 300

13.3磁场传感器 301

13.3.1磁场传感器简介 301

13.3.2案例的开发 301

13.4陀螺仪传感器 302

13.4.1陀螺仪传感器简介 302

13.4.2案例的开发 302

13.5光传感器 304

13.5.1光传感器简介 304

13.5.2案例的开发 304

13.6温度传感器 305

13.6.1温度传感器简介 305

13.6.2案例的开发 305

13.7接近传感器 306

13.7.1接近传感器简介 306

13.7.2案例的开发 307

13.8姿态传感器 308

13.8.1姿态传感器简介 308

13.8.2案例的开发 310

13.9加速度传感器综合案例 311

13.10传感器的坐标轴问题 313

13.11本章小结 316

第14章 移动开发平台上的主角——Android NDK及iOS平台下的OpenGL ES开发 317

14.1使用Android NDK进行OpenGL ES开发 317

14.1.1 Android NDK开发环境的下载及配置 317

14.1.2 Android NDK在Eclipse中的配置 320

14.1.3使用Android NDK开发简单的OpenGL ES 2.0程序 322

14.2使用Android NDK开发山地地形场景 328

14.2.1案例效果及山地绘制类的开发 329

14.2.2 NDK端渲染函数的开发 331

14.3基于iOS平台开发OpenGL ES 2.0程序 332

14.3.1案例运行效果及Xcode项目的创建 332

14.3.2案例的开发过程 334

14.4基于iOS平台的地月系场景案例 337

14.4.1案例运行效果及GLView的开发 337

14.4.2其他部分的开发 338

14.5本章小节 340

第15章Web端3D游戏开发——WebGL 3D应用开发 341

15.1 WebGL概览 341

15.1.1 WebGL简介 341

15.1.2 WebGL效果展示 341

15.2初识WebGL应用 342

15.2.1 Obj模型加载工具简介 342

15.2.2简单渲染3D模型案例的开发 344

15.3加入光照效果的WebGL案例 349

15.3.1生成带有法向量数据的JavaScript脚本文件 349

15.3.2案例的具体开发 350

15.4带有纹理贴图的WebGL案例 351

15.4.1生成带有法向量和纹理坐标数据的JavaScript脚本文件 351

15.4.2案例的开发 351

15.4.3 WebGL版的地月系案例 353

15.5本章小节 354

第16章 综合案例一——夜鹰行动 355

16.1游戏背景及功能概述 355

16.1.1游戏开发的背景概述 355

16.1.2游戏功能介绍 355

16.2游戏的策划及准备工作 358

16.2.1游戏的策划 358

16.2.2 Android平台下游戏开发的准备工作 359

16.3游戏的架构 362

16.3.1各个类的简要介绍 362

16.3.2游戏框架简介 365

16.4公共类Aircraft-Activity 366

16.5游戏相关类 368

16.5.1游戏界面绘制类(GLGameView) 369

16.5.2游戏线程类(KeyThread) 380

16.5.3子弹类(BulletForControl) 391

16.5.4坦克类(TanKe) 395

16.5.5山地绘制类(LandForm) 399

16.5.6颜色国面类(CircleForDraw) 400

16.5.7星空类(SkyNight) 402

16.5.8爆炸效果绘制类(DrawBomb) 403

16.5.9数字绘制类(NumberForDraw) 404

16.6该游戏中的着色器 405

16.6.1加载界面着色器 405

16.6.2地形着色器 405

16.6.3按钮着色器 407

16.6.4星空着色器 407

16.6.5生命值矩形着色器 408

16.6.6颜色圆面着色器 408

16.7游戏的优化与改进 408

第17章 综合案例二——BN赛艇 410

17.1游戏背景及功能概述 410

17.1.1游戏开发的背景概述 410

17.1.2游戏功能介绍 410

17.2游戏的策划及准备工作 412

17.2.1游戏的策划 412

17.2.2 Android平台下游戏的准备工作 413

17.3游戏的架构 416

17.3.1各个类简要介绍 417

17.3.2游戏框架简介 421

17.4主控制类(MyActivity) 423

17.5 2D界面相关类 426

17.5.1欢迎界面类(WelcomeView) 426

17.5.2 2D界面父类(MySFView) 427

17.5.3主菜单类(MenuView) 427

17.5.4 2D界面绘制类(ViewForDraw) 428

17.5.5数据库工具类(DBUtil) 429

17.5.6 Android系统版本对话框(AndroidVersionDialog) 431

17.6选船界面相关类 431

17.6.1着色器管理类(ShaderManager) 432

17.6.2围墙类(ColorLightRect) 432

17.6.3选船房间类(HouseForDraw) 433

17.6.4展台类(DisplayStation) 435

17.6.5赛艇类(Boat) 436

17.6.6选船界面(XCSurfaceView) 436

17.7游戏界面相关类 441

17.7.1进度条类(Process) 441

17.7.2 3D物体父类(BNDrawer) 442

17.7.3 3D物体控制类(TDObjectForControl) 442

17.7.4赛艇类(Boat) 443

17.7.5可碰撞物体父类(KZBJDrawer) 444

17.7.6可碰撞物体控制类(KZBJForControl) 444

17.7.7赛艇与可碰撞物体检测碰撞线程(ThreadColl) 446

17.7.8可吃物体父类(SpeedForEat) 446

17.7.9可吃物体控制类(SpeedForControl) 447

17.7.10晶体旋转线程(RotateThread) 448

17.7.11赛艇与晶体碰撞检测线程(ThreadForEat) 449

17.7.12比较两灌木距离摄像机距离类(MyComparable) 449

17.7.13单个灌木类(SingleShrub) 450

17.7.14灌木控制类(ShrubForControl) 451

17.7.15赛艇赛道类(RaceTrack) 451

17.7.16赛艇与桥碰撞检测类(PZZ) 453

17.7.17赛艇运动路径工具类(PathUtil) 453

17.7.18尾浪类(WeiLang) 454

17.7.19水面类(Water) 455

17.7.20游戏界面类(MyGLSurfaceView) 456

17.7.21运动监听线程(KeyThread) 463

17.8该游戏中的着色器 465

17.9游戏的优化与改进 467