第1部分 程序基础
第1章 三维世界 2
1.1 “回到真实”——三维图形的发展 2
1.2 三维世界的成像 3
1.2.1 空间位置和坐标 3
1.2.2 透视投影 3
1.3 OpenGL介绍 4
1.3.1 OpenGL语言 4
1.3.2 OpenGL工作方式 5
1.3.3 OpenGL绘制过程 5
1.4 数据类型、函数和状态变量 6
1.4.1 数据类型 6
1.4.2 函数及后缀 7
1.4.3 状态变量 9
第2章 视场的建立 19
2.1 通向“真实”的条件——程序框架 19
2.1.1 像素格式 19
2.1.2 渲染描述表 21
2.2 创建视场 21
2.2.1 创建Visual C++程序 21
2.2.2 设置像素格式与创建渲染描述表 26
2.2.3 通用基础框架程序架构 34
2.2.4 扩展到深邃的天空——全屏显示 36
2.2.5 多学一点——变化的天空 42
2.2.6 基础程序清单及重点 43
第2部分 形体建模
第3章 点与线 58
3.1 “世界”的开始——点 58
3.1.1 二维的点 58
3.1.2 三维的点 62
3.2 线和曲线 67
3.2.1 二维的线 68
3.2.2 三维的线 68
3.2.3 折线 69
3.2.4 闭合曲线 70
3.3 线型和点的变化 74
3.3.1 线型 74
3.3.2 点的变化 75
3.3.3 多学一点——七彩星空 79
3.3.4 多学一点——彩虹 85
3.3.5 程序重点清单 92
第4章 面和体 104
4.1 三角形 104
4.1.1 基本的三角形 104
4.1.2 前面、后面的绘制模式 107
4.1.3 三角形片 108
4.1.4 三角形扇 109
4.2 四边形 111
4.2.1 基本的四边形 111
4.2.2 四边形片 112
4.3 多边形 116
4.3.1 多边形与边的可见性 116
4.3.2 面的填充 117
4.4 “产生”的体 119
4.4.1 立方体 119
4.4.2 填充立方体面 120
4.4.3 多学一点——蝴蝶的翅膀 124
4.4.4 程序重点清单 132
第5章 显示列表 152
5.1 显示列表的创建 152
5.2 显示列表的执行 158
5.3 显示列表的管理 159
5.4 多学一点——旋转的红伞 162
5.5 多学一点——雨中行 169
5.6 程序重点清单 177
第6章 图形变换 201
6.1 屏幕坐标 201
6.2 投影变换 202
6.2.1 平行投影 202
6.2.2 透视投影 203
6.3 视区变换 204
6.4 剪切变换 205
6.5 几何变换 206
6.5.1 平移变换 206
6.5.2 旋转变换 206
6.5.3 缩放变换 207
6.6 矩阵操作与堆栈 213
6.6.1 矩阵操作 213
6.6.2 矩阵堆栈 214
6.6.3 多学一点——天涯共此时 215
6.6.4 程序重点清单 226
第3部分 渲染色彩
第7章 色彩构成与光照 250
7.1 OpenGL颜色的基本构成 250
7.1.1 OpenGL颜色模型 250
7.1.2 深度测试 252
7.1.3 渲染处理 254
7.2 颜色的相互作用 260
7.2.1 光的定义 260
7.2.2 物体的材质 262
7.2.3 法线的作用 263
7.2.4 全局的光照模型 263
7.2.5 深入学习——彩色气球 264
7.2.6 程序重点清单 273
第8章 融合与透明 292
8.1 OpenGL颜色的融合 292
8.2 融合的操作 293
8.3 复杂的透明 299
8.4 深入学习——绿茶 301
8.5 程序重点清单 309
第9章 反走样与雾化 328
9.1 反走样 328
9.1.1 OpenGL反走样 328
9.1.2 反走样函数与定义 329
9.2 雾化 330
9.2.1 OpenGL雾化 330
9.2.2 雾化函数与定义 330
9.2.3 深入学习——荷塘月色 340
9.2.4 程序重点清单 349
第10章 图像贴图与文字显示 370
10.1 图像位图操作 370
10.1.1 图像操作 370
10.1.2 位图操作 373
10.1.3 材质纹理贴图 374
10.2 显示汉字的方法 384
10.2.1 显示汉字方法一——贴图 385
10.2.2 显示汉字方法二——显示列表 385
10.2.3 程序重点清单 396
第4部分 动画的应用开发
第11章 动画与实时处理 418
11.1 动画 418
11.1.1 动画生成 418
11.1.2 双缓存技术 418
11.2 动画的因果 419
11.2.1 变化的形状 419
11.2.2 变化的位置 434
11.2.3 变化的颜色 444