第Ⅰ部分 图形学基础 3
1 绪论 3
1.1 计算机图形学的研究内容 3
1.2 计算机图形学的应用领域 5
1.3 计算机图形学的发展简史 5
1.4 主要的图形库API 6
2 OpenGL简介 8
2.1 OpenGL发展历史 8
2.2 OpenGL体系结构 9
2.3 OpenGL函数库 9
2.4 建立OpenGL编程环境 10
2.4.1 建立一个新工程 10
2.4.2 设置包含文件和库文件路径 11
2.4.3 加入OpenGL库 13
2.5 OpenGL程序一瞥 13
2.6 Windows环境下的OpenGL应用程序结构 18
2.6.1 Windows应用程序基本结构 18
2.6.2 OpenGL加入Windows应用程序 21
2.6.3 Windows环境下的OpenGL应用程序示例 25
本章小结 33
3 基本几何图元的定义 35
3.1 几何图元描述 35
3.1.1 点 35
3.1.2 线 35
3.1.3 多边形 36
3.2 绘制几何图元 36
3.2.1 指定顶点 36
3.2.2 定义不同的几何图元 37
本章小结 41
4 图形和视图变换 42
4.1 齐次坐标 42
4.2 二维变换 43
4.2.1 二维平移变换 43
4.2.2 二维比例变换 44
4.2.3 二维旋转变换 45
4.2.4 二维反射变换 46
4.2.5 二维错切变换 47
4.2.6 复合变换 48
4.2.7 二维变换的分解 49
4.3 三维变换 50
4.4 视图 51
4.4.1 平行投影 51
4.4.2 透视投影 52
4.5 基于OpenGL的图形变换 54
4.5.1 视点或照相机坐标 55
4.5.2 OpenGL中的矩阵 55
4.5.3 模型变换 56
4.5.4 投影变换 57
4.5.5 剪切变换 60
4.5.6 视口变换 63
4.6 综合利用各种变换绘制机器人模型 64
本章小结 72
5 颜色 74
5.1 计算机颜色 74
5.1.1 颜色生成原理 74
5.1.2 颜色模型及变换 75
5.2 OpenGL颜色模式 79
5.2.1 RGBA颜色模式 79
5.2.2 颜色索引模式 80
本章小结 80
第Ⅱ部分 高级图形学理论和实践 80
6 图形明暗效应 83
6.1 光照模型 83
6.1.1 环境光 84
6.1.2 漫反射光 84
6.1.3 镜面反射光 85
6.1.4 Phong简单光照模型 86
6.2 多边形光照计算 87
6.2.1 常量模型 87
6.2.2 Gouraud模型 88
6.2.3 Phong模型 88
6.3 OpenGL光照 89
6.3.1 光源 89
6.3.2 光照分量 90
6.3.3 材质 90
6.3.4 加入光照步骤 90
6.4 创建OpenGL光源 91
6.4.1 启动光源 92
6.4.2 设置光源颜色 92
6.4.3 设置光源位置与衰减因子 93
6.5 OpenGL光照模型 96
6.5.1 全局环境光 97
6.5.2 视点位置 97
6.5.3 双面光照 98
6.5.4 镜面反射光颜色 98
6.6 定义材质属性 98
6.6.1 设置材质环境反射光色和漫反射光色 99
6.6.2 设置镜面反射光色 100
6.6.3 设置发射光色 100
6.6.4 常见的材质属性值 100
6.6.5 设置材质属性示例 103
6.7 光源的高级控制 109
6.7.1 设置聚光灯 109
6.7.2 设置多光源 110
6.7.3 控制光源的位置和方向 114
本章小结 118
7 纹理映射 120
7.1 纹理映射概述 120
7.1.1 纹理的定义 121
7.1.2 二维纹理映射 121
7.2 凸包纹理映射 124
7.3 环境纹理映射 126
7.4 OpenGL纹理映射 127
7.5 OpenGL纹理定义 131
7.6 OpenGL纹理对象 132
7.6.1 生成纹理名 132
7.6.2 生成并使用纹理对象 132
7.7 OpenGL纹理控制 133
7.7.1 纹理滤波 133
7.7.2 重复与缩限 134
7.8 OpenGL纹理映射方式 135
7.9 OpenGL纹理坐标 135
7.9.1 纹理坐标定义 135
7.9.2 自动产生纹理坐标 136
7.10 OpenGL环境映射 140
本章小结 149
8 曲线和曲面 150
8.1 双线性面片 150
8.2 二次Bézier曲线 151
8.3 高次Bézier曲线 154
8.3.1 高次Bézier曲线的定义 154
8.3.2 Bézier曲线的性质 155
8.4 Bézier曲面 156
8.4.1 Bézier曲面的定义 156
8.4.2 Bézier曲面的细分 157
8.5 Hermite和Catmull-Rom曲线 157
8.6 B样条 159
8.6.1 B样条的定义 159
8.6.2 非三次B样条 162
8.6.3 NURBS 163
8.7 Loop曲面细分方法 163
8.8 OpenGL曲线和曲面 165
8.8.1 Bézier曲线 165
8.8.2 Bézier曲面 169
8.8.3 纹理曲面 175
8.8.4 NURBS 179
本章小结 185
9 隐藏面消除 187
9.1 BSP树 187
9.1.1 BSP树算法概述 187
9.1.2 创建树结构 190
9.1.3 划分三角形 192
9.1.4 树的优化 194
9.2 Z缓存区 194
9.2.1 Z缓存区算法 194
9.2.2 整型Z缓存区 195
9.3 背面消除 195
9.4 OpenGL隐藏面消除 196
本章小结 198
10 图形合成技术 199
10.1 融合 199
10.1.1 图形融合 199
10.1.2 OpenGL图形融合 200
10.1.3 图形融合应用 202
10.2 反走样 209
10.2.1 图形反走样 209
10.2.2 OpenGL反走样线条 211
10.2.3 OpenGL反走样多边形 214
10.3 雾化 217
10.3.1 深度暗示和雾 217
10.3.2 OpenGL雾化 218
本章小结 223
第Ⅲ部分 OpenGL高级编程 223
11 OpenGL缓存技术 227
11.1 缓存及其应用 227
11.1.1 OpenGL缓存概念 227
11.1.2 清除缓存 228
11.1.3 屏蔽缓存 229
11.2 颜色缓存 230
11.2.1 双缓存系统 230
11.2.2 立体缓存 231
11.3 模板缓存 231
11.4 累积缓存 244
本章小结 252
12 使用显示列表和顶点数组 253
12.1 显示列表 253
12.1.1 建立显示列表 254
12.1.2 添加函数命令到显示列表 254
12.1.3 执行显示列表 255
12.1.4 删除显示列表 257
12.1.5 显示列表与纹理 258
12.1.6 显示列表使用示例 258
12.2 顶点数组 268
12.2.1 启动顶点数组 269
12.2.2 使用顶点数组 270
12.2.3 使用隔行数组 273
12.2.4 锁定顶点数组 273
12.2.5 顶点数组使用示例 274
本章小结 278
13 OpenGL位图和图像 279
13.1 OpenGL位图 279
13.1.1 定位位图 279
13.1.2 绘制位图 281
13.1.3 OpenGL位图示例 281
13.2 使用图像 285
13.2.1 绘制图像数据 285
13.2.2 从屏幕上读取图像数据 286
13.2.3 拷贝屏幕数据 287
13.2.4 放大、缩小和反转 288
13.2.5 管理像素存储 288
13.2.6 图像应用示例 289
13.3 Windows位图 293
13.3.1 BMP文件格式 293
13.3.2 载入BMP文件 295
13.3.3 输出BMP文件 298
本章小结 300
14 显示字体 302
14.1 字体和显示列表 302
14.2 位图字体 302
14.3 轮廓字体 314
14.4 纹理字体 325
14.5 中文字体 338
本章小结 357
参考文献 358