图书目录

目    录

 

第1章  欢迎来到Android世界 / 1

1.1  配置开发机 / 1

1.2  下载并安装SDK / 2

1.3  配置Eclipse / 2

1.4  安装原生开发工具包 / 5

1.4.1  安装NDK / 6

1.4.2  安装Cygwin / 6

1.5  创建Android模拟器 / 6

1.6  配置真实设备 / 9

1.7  本章小结 / 10

第2章  针对手机或平板电脑的

游戏技巧 / 11

2.1  在Android中编译原生代码 / 11

2.1.1  创建支持原生代码的Android

项目 / 13

2.1.2  应用程序的体系结构 / 14

2.2  编译共享库 / 25

2.3  调试模拟器 / 26

2.4  Java对C/C++事件处理的

封装 / 27

2.4.1  独立处理音频 / 27

2.4.2  级联视频事件 / 32

2.5  多点触摸 / 37

2.5.1  MultiTouchGesture / 37

2.5.2  MultiTouchScreen / 39

2.5.3  TestActivity / 41

2.6  蓝牙控制器(Zeemote) / 42

2.7  本章小结 / 46

第3章  更多OpenGL与JNI

游戏技巧 / 49

3.1  移动设备的动力 / 50

3.2  Java方式的OpenGL / 51

3.2.1  创建项目 / 51

3.2.2  Java版本的主Activity / 54

3.2.3  surface视图 / 55

3.2.4  GL线程 / 58

3.2.5  立方体渲染器 / 61

3.2.6  Cube类 / 64

3.3  原生方式的OpenGL / 66

3.3.1  主Activity / 68

3.3.2  原生接口类 / 70

3.3.3  修改原示例 / 71

3.3.4  原生立方体渲染器 / 72

3.3.5  原生立方体类 / 78

3.3.6  编译和运行示例 / 79

3.4  通过OpenGL ES混合模式

缩放视频缓冲区 / 82

3.4.1  为什么使用混合缩放 / 83

3.4.2  初始化surface / 85

3.4.3  绘制到纹理 / 86

3.4.4  当图像的尺寸不是2的幂时

会发生什么 / 89

3.5  本章小结 / 94

第4章  OpenGL ES 2.0的高效图形 / 95

4.1  OpenGL ES 2.0与Android / 95

4.1.1  着色器 / 96

4.1.2  GLSL / 96

4.1.3  剖析着色器 / 98

4.2  在Android中调用

OpenGL ES 2.0 / 101

4.3  二十面体项目 / 102

4.3.1  定义形状 / 102

4.3.2  处理项目 / 104

4.3.3  原生二十面体 / 112

4.4  添加“滑动”和多点触摸的“捏”

缩放功能 / 119

4.5  编译与运行 / 122

4.6  本章小节 / 123

第5章  3D射击游戏:Doom / 125

5.1  组合使用Java/C,功能

无极限 / 126

5.2  将Doom移植到移动设备 / 127

5.3  Doom游戏的体系结构 / 129

5.4  Java层的主Activity / 130

5.4.1  创建处理程序 / 131

5.4.2  游戏布局 / 132

5.4.3  菜单和选择项处理程序 / 134

5.4.4  按键和触摸事件处理程序 / 135

5.4.5  原生回调处理程序 / 137

5.4.6  导航控件 / 140

5.5  独立处理音频格式 / 142

5.6  原生接口类 / 143

5.6.1  回调监听器 / 143

5.6.2  原生方法 / 144

5.6.3  C到Java的回调 / 144

5.7  原生层 / 147

5.7.1  原生方法的实现 / 147

5.7.2  对原始游戏进行修改 / 159

5.8  使用NDK编译Doom / 165

5.9  在模拟器中测试Doom / 167

5.10  本章小结 / 169

第6章  3D射击游戏:Quake / 171

6.1  一些关于Quake的术语 / 171

6.2  代码重用的威力:Quake中的

新代码少于500行 / 172

6.3  软件渲染是合理解决方案吗 / 174

6.4  Quake的Android架构 / 179

6.4.1  Java OpenGL渲染器架构 / 180

6.4.2  独立处理音频格式 / 185

6.4.3  处理键盘事件 / 187

6.4.4  处理触摸事件 / 189

6.4.5  游戏的启动Activity / 192

6.5  原生Quake引擎必需的改动 / 193

6.5.1  视频处理程序的改动 / 194

6.5.2  处理X轴旋转(pitch)和Y轴

旋转(yaw) / 196

6.5.3  处理前进和横向运动 / 197

6.5.4  音频处理程序的改动 / 197

6.5.5  修复游戏循环 / 200

6.6  在设备上运行Quake / 202

6.7  本章小结 / 208

第7章  3D射击游戏:QuakeⅡ / 209

7.1  代码回顾 / 209

7.2  逃离Java堆的束缚 / 210

7.3  让QuakeⅡ引擎在Android中

工作 / 211

7.3.1  代码的可重用性 / 211

7.3.2  当发生致命错误时如何

处理 / 221

7.3.3  OpenGL立即模式问题 / 223

7.3.4  视频处理程序 / 224

7.4  使用NDK编译QuakeⅡ / 228

7.5  在设备或模拟器中运行游戏 / 231

7.6  QuakeⅡ在多种设备中的性能

表现 / 234

7.7  本章小结 / 234

附录  部署和编译技巧 / 237