目 录
第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
