OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例

OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2014-03
版次: 01
ISBN: 9787115339164
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 467页
字数: 829千字
正文语种: 简体中文
32人买过
  •   《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》共分为17章,内容按照必知必会的基础知识、基于OpenGL ES 2.0实现基本特效以及真实大型游戏案例的顺序进行详细地讲解。主要内容如下:OpenGL的渲染管线、着色语言(Shading Language)、投影及各种变换、OpenGL ES 2.0中光照的基本原理与实现、纹理映射的基本原理与使用、各种3D基本形状的原理与实现、3D模型加载、混合及雾的基本原理与使用、3D开发技巧(包括标志版、灰度图地形、粒子沉积地形、天空盒与天空穹、镜像技术、动态文本输出以及非真实感绘制等一些常用的3D开发技巧)、剪裁与测试、Android中各种传感器的使用,以及NDK及iOS平台下的OpenGL ES开发,同时还介绍了如何在不同的平台间进行3D应用的移植;WebGL 3D应用开发,如何将3D应用移植到WebGL平台。最后用两大完整案例夜鹰行动和BN赛艇贯穿整本书的实战知识,真正帮助读者学以致用。
      《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》中在给出实际的开发案例时涉及了Android SDK、Android NDK、iOS、WebGL等主流平台,书中关于可编程渲染管线着色器的知识与技术还可以通用于包括Windows Phone、MeeGO、PSP、PlayStation等移动嵌入式平台。
      《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》适合初学者、移动开发者、游戏开发者、程序员学习,也适合大中专院校的相关专业的师生用书和培训学校的教材。 吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGLES、手机游戏、JavaEE以及搜索引擎。同时为手机游戏、JavaEE独立软件开发工程师,并兼任百纳科技Java培训中心首席培训师。近十年来为数十家著名企业培养了上千名高级软件开发人员,曾编写过《Android3D游戏案例开发大全》、《Android平板电脑开发实战详解和典型案例》、《Android游戏开发大全》、《Android应用案例开发大全》、《Unity3D游戏开发技术详解与典型案例》等多本畅销技术书籍。2008年年初开始关注Android平台下的应用开发,并开发出一系列优秀的Android3D应用程序与游戏。 目 录

    第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 文件I/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
  • 内容简介:
      《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》共分为17章,内容按照必知必会的基础知识、基于OpenGL ES 2.0实现基本特效以及真实大型游戏案例的顺序进行详细地讲解。主要内容如下:OpenGL的渲染管线、着色语言(Shading Language)、投影及各种变换、OpenGL ES 2.0中光照的基本原理与实现、纹理映射的基本原理与使用、各种3D基本形状的原理与实现、3D模型加载、混合及雾的基本原理与使用、3D开发技巧(包括标志版、灰度图地形、粒子沉积地形、天空盒与天空穹、镜像技术、动态文本输出以及非真实感绘制等一些常用的3D开发技巧)、剪裁与测试、Android中各种传感器的使用,以及NDK及iOS平台下的OpenGL ES开发,同时还介绍了如何在不同的平台间进行3D应用的移植;WebGL 3D应用开发,如何将3D应用移植到WebGL平台。最后用两大完整案例夜鹰行动和BN赛艇贯穿整本书的实战知识,真正帮助读者学以致用。
      《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》中在给出实际的开发案例时涉及了Android SDK、Android NDK、iOS、WebGL等主流平台,书中关于可编程渲染管线着色器的知识与技术还可以通用于包括Windows Phone、MeeGO、PSP、PlayStation等移动嵌入式平台。
      《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》适合初学者、移动开发者、游戏开发者、程序员学习,也适合大中专院校的相关专业的师生用书和培训学校的教材。
  • 作者简介:
    吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java应用的开发,有10多年的Java开发与培训经验。主要的研究方向为OpenGLES、手机游戏、JavaEE以及搜索引擎。同时为手机游戏、JavaEE独立软件开发工程师,并兼任百纳科技Java培训中心首席培训师。近十年来为数十家著名企业培养了上千名高级软件开发人员,曾编写过《Android3D游戏案例开发大全》、《Android平板电脑开发实战详解和典型案例》、《Android游戏开发大全》、《Android应用案例开发大全》、《Unity3D游戏开发技术详解与典型案例》等多本畅销技术书籍。2008年年初开始关注Android平台下的应用开发,并开发出一系列优秀的Android3D应用程序与游戏。
  • 目录:
    目 录

    第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 文件I/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
查看详情
相关图书 / 更多
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV轻松入门:面向Python(第2版)
李立宗
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenShift开发指南(原书第2版)
[美]约书亚·伍德 (美)布赖恩·坦努斯 著
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV 4.5计算机视觉开发实战:基于Python
朱文伟 李建英
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV计算机视觉项目实战(Python版)
洪锦魁
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenHarmony轻量设备开发理论与实战
齐耀龙
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV图像处理技术(微课版)
傅贤君
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV入门与技术实践
罗刚
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV图像处理实战
贾睿 主编;北京博海迪信息科技有限公司 组编
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenHarmony嵌入式系统原理与应用——基于RK2206芯片(微课视频版)
薛小铃
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenFOAM多物理场计算基础与建模
杨文明 编著
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenStack云计算平台搭建与管理(微课版)
姚骏屏 何桂兰
OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例
OpenCV 4.0+Python机器学习与计算机视觉实战
[印]梅努阿·吉沃吉安 著;黄进青 译