序章 1
0-1 内容结构 1
0-2 编写目的 2
0-3 学3D编程是选Direct3D还是OpenGL好 4
第1章 OpenGL的程序框架 6
1-1 建立非控制台的Windows程序框架 6
1-2 建立OpenGL框架 10
1-2-1 输入OpenGL框架的源程序 10
1-2-2 指示OpenGL的引用和连接位置 10
1-2-3 编译连接程序 11
1-3 OpenGL程序框架注解 12
1-3-1 全局定义 12
1-3-2 Windows框架 13
1-3-3 OpenGL框架 16
1-3-4 程序间的相互关系 19
1-4 建立类文件 20
1-4-1 新建一个类文件 20
1-4-2 在新建类中加入OpenGL的框架程序。 22
1-4-3 类文件的使用。 23
1-5 本章程序结构 25
第2章 OpenGL的基本图形 28
2-1 OpenGL库函数命名方式 28
2-1-1 前缀 29
2-1-2 后缀 30
2-2 基本图形 30
2-2-1 点 31
2-2-2 构图形式 31
2-2-3 构图实例 32
2-3 坐标变换 36
2-3-1 平移 36
2-3-2 旋转 37
2-3-3 缩放 37
2-4 辅助库物体 37
2-5 在OpenGL中显示图形 38
2-5-1 打开VC源程序的方法 39
2-5-2 显示立体图形 41
2-6 建立物体类文件 43
2-6-1 类文件建立方法 43
2-6-2 将程序移到类文件中 45
2-6-3 使用类中的函数 46
2-7 本章程序结构 47
第3章 OpenGL的组合图形 51
3-1 飞机模型 51
3-1-1 构造飞机 52
3-1-2 程序注释 53
3-1-3 增加动感 54
3-2 贴图 55
3-2-1 调入图形文件 55
3-2-2 给模型贴图 57
3-2-3 自定义长方体BOX 59
3-3 又一个组合图形 60
3-4 本章程序结构 62
第4章 摄像漫游 65
4-1 摄像机+漫游 65
4-1-1 原理 65
4-1-2 漫游程序 66
4-1-3 漫游程序注释 67
4-1-3 漫游相关定义 68
4-2 地面 69
4-2-1 网格地面 69
4-2-2 边界设定 70
4-2-3 使用摄像机 72
4-3 本章程序结构 73
第5章 开天辟地 76
5-1 随机山势 76
5-1-1 地面的构成算法 76
5-1-3 取地面高度 79
5-1-4 在漫游中加入高度 80
5-2 等高图山势 82
5-2-1 等高线地图 82
5-2-2 等高线山势 84
5-3 天空盒 85
5-3-1 天空盒原理 86
5-3-2 天空盒程序 87
5-5 本章程序结构 92
第6章 OpenGL中的文字显示 96
6-1 OpenGL常规文字显示 96
6-1-1 常规文字显示程序 96
6-1-2 常规文字显示调用方式 97
6-2 3D文字显示 98
6-2-1 3D文字显示程序 98
6-2-2 3D文字显示程序注释 99
6-2-3 3D文字显示调用方式 101
6-3 OpenGL平面汉字显示 101
6-3-1 平面汉字显示程序 101
6-3-2 程序注释 103
6-4 初始化和字体定义 105
6-5 本章程序结构 107
第7章 特殊的平面树 110
7-1 普通平面树 110
7-1-1 平面树程序 111
7-1-2 树的贴图 112
7-1-3 ShowTree O(…)树的显示 114
7-2 特殊平面树 115
7-2-1 特殊平面程序 115
7-2-2 程序注释 116
7-3 本章程序结构 118
第8章 显示3DS模型 120
8-1 3DS模型文件简介 120
8-1-1 3DS文件简介 121
8-1-2 3D模型查看工具 122
8-2 3DS模型文件的类 125
8-3 使用3DS模型 126
8-3-1 调入3DS模型 126
8-3-2 3DS模型的显示 127
8-4 本章程序结构 129
第9章 MD2动画模型 131
9-1 关键帧动画模型 131
9-2 MD2动画模型定义、初始化 133
9-2-1 动画模型的相关定义 134
9-2-2 动画模型初始化 136
9-3 调入MD2动画模型 137
9-3-1 调入模型 137
9-3-2 获取动作序列 138
9-4 显示动画模型 139
9-4-1 显示MD2模型 139
9-4-2 调用模型显示 142
9-5 本章程序结构 143
第10章 MDL动画模型 148
10-1 骨骼动画模型 148
10-2 调用MDL动画模型 150
10-2-1 引用MDL动画模型外部文件 150
10-2-2 MDL动画模型的相关定义 150
10-3 使用MDL动画模型 152
10-3-1 调入模型 152
10-3-2 显示模型 153
10-3-3 射击动作转换 156
10-4 本章程序结构 157
第11章 射击、爆炸 162
11-1 粒子算法调用 162
11-1-1 粒子定义和初始化 163
11-1-2 爆炸粒子调用函数 163
11-2 鼠标操作漫游 165
11-2-1 鼠标操作 166
11-2-2 全屏显示模式 167
11-3 射击 169
11-3-1 变量定义和鼠标按键测试 169
11-3-2 发射动作 170
11-3-3 射击函数 171
11-4 本章程序结构 173
第12章 碰撞检测 178
12-1 碰撞绕行 178
12-1-1 变量、函数定义 178
12-1-2 碰撞绕行算法 180
12-2 子弹击中目标 183
12-2-1 子弹碰撞检测函数 183
12-2-2 子弹命中目标爆炸 184
12-3 人物的随机活动 186
12-3-1 对象的移动 186
12-3-2 修改后的模型显示 188
12-4 本章程序结构 190
第13章 游戏进度保存 194
13-1 调整数据 194
13-1-1 数据结构和变量、函数定义 194
13-1-2 初始化数据 196
13-1-3 产生新场景 199
13-2 保存场景 201
13-3 调入场景 203
13-4 统一显示 205
13-5 本章程序结构 207
第14章 3D场景编辑 211
14-1 屏幕拾取 212
14-1-1 屏幕拾取相关定义 213
14-1-2 屏幕坐标转为场景坐标 213
14-1-3 鼠标拾取对象 217
14-2 对象编辑 218
14-2-1 对象拖动 218
14-2-2 对象旋转 219
14-2-3 改变视点高度 219
14-3 场景文件的选择存取 220
14-3-1 调文件对话框 220
14-3-2 存文件对话框 223
附录 225
附录A 示范程序全部源程序 225
附录A1 3D场景编辑.cpp 225
附录A2 OpenGL.cpp 229
附录A3 BAISCOBJ.CPP 235
附录A4 anmobj.cpp 250
附录A5 Modelobj.cpp 255
附录A6 GLFont.cpp 267
附录A7 Mdlobj.cpp 271
附录A8 stdafx.h 273
附录B VC程序编译环境的设置 275
附录B1 选择调试或发布模式 276
附录B2 程序的连接方式 277
附录B3 加入连接库 278
附录B4 改变运行程序名 279
附录B5 各章节编译环境设置。 279
附录C VC+程序调试方法 280
附录C1 使用编译、连接的出错信息 280
附录C2 使用消息函数进行运行时调试 283
附录C3 设置断点进行单步调试 284
附录D 本书使用的外部功能模块 290
附录E 《学OpenGL编3D游戏》光盘说明 291