第1章 外部三维模型的读取与绘制 1
1.1 3DS模型的读取与绘制 2
1.1.1 3DS文件格式简介 2
1.1.2 3DS编辑程序块 2
1.1.3 3DS模型的读取与绘制实例 8
1.2 OBJ模型的读取与绘制 27
1.2.1 OBJ文件格式简介 27
1.2.2 OBJ模型的读取与绘制实例 32
1.3 ASE模型的读取与绘制 44
1.3.1 ASE文件格式简介 44
1.3.2 ASE模型的读取与绘制 47
1.4 MD2/MD3模型的读取与绘制 66
1.4.1 MD2/MD3文件格式介绍 66
1.4.2 MD2模型的读取与绘制 67
1.4.3 MD3模型的读取与绘制 79
1.5.1 MS3D文件格式简介 99
1.5 MS3D模型的读取与绘制 99
1.5.2 MS3D模型的读取与绘制 101
1.6 转换3DS模型为OpenGL源文件 112
1.6.1 3DS模型转换 112
1.6.2 转换模型的读取与显示 113
第2章 三维地形的模拟 115
2.1 地形模拟概述 116
2.2 地形模拟实例介绍 117
2.2.1 地形数据的获得与地形的渲染 117
2.2.2 地形漫游的实现 120
2.2.3 天空的绘制 126
2.2.4 场景绘制 129
第3章 粒子系统编程技术 132
3.1 粒子系统概述 133
3.1.1 过程模型 133
3.1.2 粒子系统 133
3.2 爆发的喷泉实例介绍 134
3.2.1 粒子属性的定义 135
3.2.2 粒子的生成 135
3.2.3 粒子的运动 136
3.2.4 粒子的死亡 137
3.2.5 粒子的绘制 138
3.2.6 场景绘制 139
3.3 五色的彩虹实例介绍 141
3.3.1 粒子属性的定义 141
3.3.2 粒子的纹理定义 143
3.3.3 粒子与场景的初始化 144
3.3.4 粒子与场景的绘制 145
3.3.5 键盘交互 148
第4章 碰撞检测技术编程 150
4.1 碰撞检测概述 151
4.2.1 各数据结构的定义 152
4.2 碰撞检测实例介绍 152
4.2.2 场景的建模 155
4.2.3 碰撞检测 158
4.2.4 场景绘制 161
4.2.5 用户交互 165
第5章 自然现象的模拟 167
5.1 模拟方法概述 168
5.2 动态云彩的模拟 168
5.2.1 云彩纹理图像的获得 169
5.2.2 纹理参数的定义 170
5.2.3 动态云彩的显示 171
5.3 移动雾效的模拟 173
5.3.1 雾效图像的获得 173
5.3.2 纹理参数的定义 174
5.3.3 场景的绘制 175
5.4 海面波浪的模拟 177
5.4.1 海面纹理图像的获取 177
5.4.2 纹理参数的定义 178
5.4.3 海面波浪的绘制 179
5.4.4 用户交互 181
第6章 LOD技术编程 183
6.1 LOD技术概述 184
6.2 LOD编程实例一 187
6.2.1 球体的数据结构与球体的纹理 187
6.2.2 球体的绘制 188
6.2.3 与用户交互 190
6.3 LOD编程实例二 192
6.3.1 获取地形高程数据 192
6.3.2 设置地形的层次结构 194
6.3.3 LOD地形的绘制 195
6.3.4 与用户交互 195
第7章 高级界面编程技术 198
7.1.2 菜单项的初始化 199
7.1.1 菜单项数据结构的定义 199
7.1 OpenGL界面编程实例 199
7.1.3 菜单的绘制 200
7.1.4 菜单项的响应 203
第8章 OpenGL三维图形后处理技术 205
8.1 屏幕图形的打印 206
8.1.1 DDB转换为DIB 206
8.1.2 将屏幕位图转换成DIB 209
8.1.3 屏幕图形打印预览 210
8.1.4 实现应用程序打印预览 211
8.1.5 实现应用程序打印 213
8.2 屏幕图形的保存 214
8.2.1 将DIB数据写入到文件 215
8.2.2 实现保存功能 216
8.3 屏幕动画的录制 217
8.3.1 写入AVI文件的头信息 217
8.3.2 写入AVI文件的帧信息 220
8.3.3 实现应用程序动画录制 221
第9章 综合开发实例一——三维台球 225
9.1 游戏简介 226
9.2 编程思想 226
9.3 技术基础 227
9.3.1 向量与矩阵操作基础 227
9.3.2 读入TGA纹理数据 232
9.4 关键技术 235
9.4.1 基本数据结构的定义 235
9.4.2 场景的初始化 237
9.4.3 静态场景的绘制 240
9.4.4 动态对象的绘制 241
9.4.5 场景的绘制 242
9.4.6 鼠标交互方式 243
9.4.7 键盘交互方式 246
9.4.8 游戏参数的初始化 248
9.4.9 力的计算 250
9.4.10 计算方法 252
9.4.11 碰撞检测 253
9.4.12 碰撞处理 256
9.4.13 游戏模拟 257
第10章 综合开发实例二——俄罗斯方块 261
10.1 游戏简介 262
10.2 编程思想 263
10.3 编程技术 263
10.3.1 屏幕文本的绘制 263
10.3.2 基本数据结构的定义 264
10.3.3 场景初始化 265
10.3.4 游戏封面的绘制 266
10.3.5 游戏主界面的绘制 268
10.3.6 新方块的产生 272
10.3.7 游戏进度的控制 276
10.3.8 下落方块的控制 279
10.3.9 设计菜单 282