OpenGL ES应用开发实践指南:Android卷

OpenGL ES应用开发实践指南:Android卷
作 者: Kevin Brothaler 刘力平 苏统华
出版社: 机械工业出版社
丛编项: 移动开发
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 编程语言与程序设计 计算机与互联网
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  KevinBrothaler移动软件开发商店Digipom的创始人,在Android开发方面有丰富的经验,并且管理着“LearnOpenGLES”(http://www.learnopengles.com),这是一套面向Android和WebGL的在线OpenGL教程。 刘力平,硕士,多年供职于知名国外移动终端设备企业,从事系统软件设计、开发工作,尤其在Android软件开发方面具有丰富的经验。自从Android平台发布以来,一直在从事Android系统开发方面的工作,是所在企业的AndroidFramework主题专家。他感兴趣的领域是Android框架设计、云计算应用、软件项目管理等。 苏统华,博士,哈尔滨工业大学软件学院硕士生导师,哈尔滨工业大学英伟达CUDA教学中心负责人。主要研究领域包括大规模并行计算、模式识别、物联网智能信息处理、智能媒体交互与计算等。他在手写汉字识别领域建立了里程碑式工作,论文他引约300次;他所建立的HIT-MW库,为全世界100多家科研院所采用;目前负责国家自然科学基金项目2项。2013年,他领导的研究组在文档分析和识别国际会议(ICDAR’2013)上获得手写汉字识别竞赛的双料冠军。2014年,他领导的研究组发布基于Android平台的手写输入法。著有英文专著《ChineseHandwritingRecognition:AnAlgorithmicPerspective》(德国施普林格出版社出版),出版相关译作5本(机械工业出版社出版)。

内容简介

《OpenGL ES应用开发实践指南:Android卷》是一本系统的OpenGL三维游戏和动态壁纸开发指南。由资深Android开发专家根据OpenGLES2.0版本撰写,不仅系统地讲解了OpenGLES的核心概念、技术,以及Android的图形机制,还通过大量案例讲解了在Android上进行OpenGLES开发的方法和技巧。《OpenGL ES应用开发实践指南:Android卷》分为两部分,共15章:第1章主要介绍开发环境的安装和配置,以及如何创建一个新的OpenGL项目和清空屏幕;第一部分(第2~9章)详细讲解创建一个简单的空气曲棍球游戏的触控、纹理和基本原理,包括如何成功地初始化OpenGL并将数据发送到屏幕上,如何使用基本的向量和矩阵数学创建三维世界,以及Android的许多特定细节,比如在Dalvik虚拟机和本地环境之间编码数据(marshaldata)以及如何在主线程和渲染线程间安全地传送数据。第二部分(第10~15章)详细介绍如何搭建三维世界中的效果,比如光照和地形渲染,以及如何创建可以运行在Android主屏幕上的动态壁纸。此外,附录还提供了正交投影和透视投影两个OpenGL常用投影类型背后的矩阵知识,以及一些实用的应用程序调试技巧。

图书目录

推荐序

致 谢

前 言

第1章 准备开始 1

1.1 安装工具 1

1.2 创建第一个程序 3

1.3 初始化OpenGL 5

1.4 创建Renderer类 10

1.5 使用静态导入 12

1.6 小结 12

第一部分 一个简单的空气曲棍球游戏

第2章 定义顶点和着色器 14

2.1 为什么选择空气曲棍球 14

2.2 不要从头开始 15

2.3 定义空气曲棍球桌子的结构 16

2.4 使数据可以被OpenGL存取 18

2.5 引入OpenGL管道 20

2.6 OpenGL颜色模型 25

2.7 小结 26

第3章 编译着色器及在屏幕上绘图 27

3.1 加载着色器 27

3.2 编译着色器 29

3.3 把着色器一起链接进OpenGL的程序 33

3.4 做最后的拼接 35

3.5 在屏幕上绘制 39

3.6 小结 43

3.7 练习 43

第4章 增加颜色和着色 44

4.1 平滑着色 45

4.2 引入三角形扇 45

4.3 增加一个新的颜色属性 46

4.4 使用新的颜色属性渲染 52

4.5 小结 55

4.6 练习 55

第5章 调整屏幕的宽高比 56

5.1 宽高比的问题 57

5.2 使用虚拟坐标空间 58

5.3 线性代数基础 59

5.4 定义正交投影 62

5.5 加入正交投影 64

5.6 小结 67

5.7 练习 67

第6章 进入第三维 68

6.1 三维的艺术 68

6.2 从着色器到屏幕的坐标变换 69

6.3 添加w分量创建三维图 71

6.4 使用透视投影 72

6.5 定义透视投影 73

6.6 在代码中创建投影矩阵 75

6.7 开始使用投影矩阵 76

6.8 增加旋转 79

6.9 小结 81

6.10 练习 82

第7章 用纹理增加细节 83

7.1 理解纹理 84

7.2 把纹理加载进OpenGL中 85

7.3 创建新的着色器集合 90

7.4 为顶点数据创建新的类结构 91

7.5 为着色器程序添加类 95

7.6 绘制纹理 99

7.7 小结 101

7.8 练习 101

第8章 构建简单物体 102

8.1 合并三角形带和三角形扇 102

8.2 添加几何图形的类 104

8.3 添加物体构建器 105

8.4 更新物体 112

8.5 更新着色器 113

8.6 集成所有的变化 114

8.7 小结 119

8.8 练习 119

第9章 增加触控反馈:与空气曲棍球游戏交互 120

9.1 为Activity增加触控支持 120

9.2 增加相交测试 122

9.3 通过拖动移动物体 130

9.4 增加碰撞检测 132

9.5 小结 136

9.6 练习 137

第二部分 构建三维世界

第10章 用粒子增添趣味 140

10.1 为一个简单的粒子系统创建一组着色器 141

10.2 添加粒子系统 144

10.3 绘制粒子系统 148

10.4 扩散粒子 150

10.5 添加重力 152

10.6 用累加混合技术混合粒子 153

10.7 自定义点的外形 153

10.8 把每个点绘制为一个精灵 154

10.9 小结 156

10.10 练习 156

第11章 增加天空盒 157

11.1 创建天空盒 157

11.2 把立方体贴图加载到OpenGL中 159

11.3 创建立方体 161

11.4 增加天空盒着色器程序 163

11.5 在场景中加入天空盒 165

11.6 围绕场景移动相机 167

11.7 小结 169

11.8 练习 169

第12章 增加地形 170

12.1 创建高度图 170

12.2 创建顶点和索引缓冲区对象 171

12.3 加载高度图 173

12.4 绘制高度图 176

12.5 遮罩被隐藏的物体 180

12.6 小结 183

12.7 练习 183

第13章 点亮世界 184

13.1 仿真光照的效果 184

13.2 用朗伯体反射实现方向光 186

13.3 添加点光 192

13.4 小结 199

13.5 练习 199

第14章 创建动态壁纸 200

14.1 实现动态壁纸的Service组件 200

14.2 权衡系统的其余部分 207

14.3 小结 209

14.4 练习 209

第15章 采取下一步行动 211

15.1 展望其他平台 211

15.2 了解更高级的技术 213

15.3 与世界分享你的艺术视野 216

附录A 投影背后的矩阵数学 217

附录B 调试 223

参考文献 228