第1章 欢迎来到Android世界
1.1 配置开发机
1.2 下载并安装SDK
1.3 配置Eclipse
1.4 安装原生开发工具包
1.4.1 安装NDK
1.4.2 安装Cygwin
1.5 创建Android模拟器
1.6 配置真实设备
1.7 本章小结
第2章 针对手机或平板电脑的游戏技巧
2.1 在Android中编译原生代码
2.1.1 创建支持原生代码的Android项目
2.1.2 应用程序的体系结构
2.2 编译共享库
2.3 调试模拟器
2.4 Java对C/CH事件处理的封装
2.4.1 独立处理音频
2.4.2 级联视频事件
2.5 多点触摸
2.5.1 MultiTouchGesture
2.5 2 MultiTouchScreen
2.5.3 TestActivity
2.6 蓝牙控制器(Zeemote)
2.7 本章小结
第3章 更多OpenGL与JNI游戏技巧
3.1 移动设备的动力
3.2 Java方式的OpenGL
3.2.1 创建项目
3.2.2 Java版本的主Activity
3.2.3 surface视图
3.2.4 GL线程
3.2.5 立方体渲染器
3.2.6 Cube类
3.3 原生方式的OpenGL
3.3.1 主ActiVity
3.3.2 原生接口类
3.3.3 修改原示例
3.3.4 原生立方体渲染器
3.3.5 原生立方体类
3.3.6 编译和运行示例
3.4 通过OpenGLES混合模式缩放视频缓冲区
3.4.1 为什么使用混合缩放
3.4.2 初始化surface
3.4.3 绘制到纹理
3.4.4 当图像的尺寸不是2的幂时会发生什么
3.5 本章小结
第4章 OpenGLES2.0的高效图形
4.1 0penGLES2.0与Android
4.1.1 着色器
4.1.2 GLSL
4.1.3 剖析着色器
4.2 在Android中调用OpenGLES2.0
4.3 二十面体项目
4.3.1 定义形状
4.3.2 处理项目
4.3.3 原生二十面体
4.4 添加“滑动”和多点触摸的“捏”缩放功能
4.5 编译与运行
4.6 本章小节
第5章 3D射击游戏:Doom
5.1 组合使用Java/C,功能无极限
5.2 将Doom移植到移动设备
5.3 Doom游戏的体系结构
5.4 Java层的主Activity
5.4.1 创建处理程序
5.4.2 游戏布局
5.4.3 菜单和选择项处理程序
5.4.4 按键和触摸事件处理程序
5.4.5 原生回调处理程序
5.4.6 导航控件
5.5 独立处理音频格式
5.6 原生接口类
5.6.1 回调监听器
5.6.2 原生方法
5.6.3 C到Java的回调
5.7 原生层
5.7.1 原生方法的实现
5.7.2 对原始游戏进行修改
5.8 使用NDK编译Doom
5.9 在模拟器中测试Doom
5.10 本章小结
第6章 3D射击游戏:Quake
6.1 一些关于Quake的术语
6.2 代码重用的威力:Quake中的新代码少于500行
6.3 软件渲染是合理解决方案吗
6.4 Quake的Android架构
6.4.1 Java OpenGL渲染器架构
6.4.2 独立处理音频格式
6.4.3 处理键盘事件
6.4.4 处理触摸事件
6.4.5 游戏的启动Activity
6.5 原生Quake引擎必需的改动
6,5.1 视频处理程序的改动
6.5.2 处理X轴旋转(pitch)和Y轴旋转(yaw)
6.5.3 处理前进和横向运动
6.5.4 音频处理程序的改动
6.5.5 修复游戏循环
6.6 在设备上运行Quake
6.7 本章小结
第7章 3D射击游戏:QuakeII
7.1 代码回顾
7.2 逃离Java堆的束缚
7.3 让QuakeⅡ引擎在Android中工作
7.3.1 代码的可重用性
7.3.2 当发生致命错误时如何处理
7.3.3 0penGL立即模式问题
7.3.4 视频处理程序
7.4 使用NDK编译QuakeⅡ
7.5 在设备或模拟器中运行游戏
7.6 QuakeⅡ在多种设备中的性能表现
7.7 本章小结
附录 部署和编译技巧