第1章 OpenGL基础知识 1
1.1 OpenGL概述 1
1.1.1 OpenGL是直观的三维图形开发环境 1
1.1.2 OpenGL是三维图形的开发标准 2
1.1.3 OpenGL的基本功能与操作 2
1.1.4 OpenGL的体系结构 3
1.1.5创建OpenGL控制台应用程序框架 4
1.2 OpenGL图形的实现方式 8
1.2.1设备描述表与渲染描述表 8
1.2.2 OpenGL像素格式设置 11
1.2.3 OpenGL图形处理流程 13
1.2.4 OpenGL图形绘制方式 14
1.2.5 OpenGL程序运行方式 15
1.3 OpenGL图形开发库 16
1.3.1开发库的组成 16
1.3.2基本数据类型 20
1.3.3 OpenGL库函数命名规则 21
1.4基于OpenGL的高层图形库 21
1.5 OpenGL应用程序框架 24
1.6开发实例:基本二维几何物体绘制 29
本章小结与习题 32
第2章 OpenGL建模技术 33
2.1基本图元及规则物体绘制 33
2.1.1图形显示控制 33
2.1.2点的绘制 39
2.1.3线段的绘制 41
2.1.4多边形的绘制 42
2.1.5规则三维物体绘制函数 48
2.1.6开发实例:基本三维几何物体绘制 50
2.2曲线与曲面绘制 61
2.2.1曲线的基本理论 61
2.2.2样条曲线的绘制 63
2.2.3样条曲面的绘制 67
2.2.4 NURBS曲线和曲面绘制 72
2.2.5二次曲面 81
2.3显示列表 83
2.3.1显示列表的概念 83
2.3.2显示列表的创建 84
2.3.3显示列表的执行 85
2.3.4多重显示列表 85
2.3.5显示列表的索引 86
2.3.6显示列表的嵌套 87
2.3.7实例介绍 88
2.4位图、图像与文本绘制 90
2.4.1位图绘制 90
2.4.2图像绘制 96
2.4.3文本绘制 101
2.5开发实例:植物生长L系统——花朵与叶脉绘制 106
本章小结与习题 111
第3章 坐标变换 112
3.1从三维图形到二维图像 112
3.1.1三维图形的输出过程 112
3.1.2坐标系与坐标变换 113
3.1.3矩阵操作 113
3.2几何变换 116
3.2.1平移变换 116
3.2.2旋转变换 117
3.2.3缩放变换 118
3.2.4变换次序 119
3.2.5实例介绍 120
3.3投影变换 121
3.3.1透视投影 122
3.3.2正交投影 124
3.4视窗变换 125
3.4.1定义视窗 125
3.4.2变换z坐标 126
3.5附加裁剪面 126
3.6矩阵堆栈 129
3.7组合变换举例 136
3.8开发实例:植物生长L系统——图形与场景变换 139
本章小结与习题 139
第4章 OpenGL颜色 141
4.1 RGBA模式与颜色索引模式 141
4.1.1 RGBA显示模式 143
4.1.2颜色索引显示模式 144
4.1.3 RGBA模式与颜色索引模式的对比 146
4.1.4抖动操作 147
4.2指定阴影模型 148
4.3开发实例:植物生长L系统——植物颜色的渲染 149
本章小结与习题 150
第5章 光照与材质处理 151
5.1真实世界与OpenGL光照 151
5.1.1发射光、环境光、漫反射光和镜面反射光 152
5.1.2材质颜色 153
5.2创建光源 155
5.2.1定位和衰减 155
5.2.2聚光灯 155
5.2.3多光源 156
5.2.4控制光源的位置与方向 160
5.3选择光照模型 163
5.4开发实例:植物质地与环境光线的呈现 168
本章小结与习题 170
第6章 纹理映射技术 174
6.1纹理映射的定义 175
6.1.1一维纹理映射的定义 175
6.1.2二维纹理映射的定义 179
6.2纹理数据的获取 180
6.2.1直接创建法 180
6.2.2读取外部文件 181
6.3纹理坐标 182
6.3.1纹理坐标的指定 182
6.3.2纹理坐标的自动计算 183
6.4纹理控制 187
6.4.1缩小与放大滤波 188
6.4.2纹理重复和截取 189
6.5多重纹理 195
6.6开发实例:植物生长L系统——天空、土地等背景纹理映射 199
本章小结与习题 204
第7章 帧缓存技术与动画 213
7.1 OpenGL中的各种缓存 213
7.2缓存操作技术 214
7.2.1清除缓存 214
7.2.2选择绘图颜色缓存 215
7.2.3屏蔽缓存 216
7.3测试操作 217
7.3.1裁剪测试 218
7.3.2 Alpha测试 218
7.3.3模板测试 219
7.3.4深度测试 225
7.3.5混合、抖动、逻辑操作 225
7.4双缓存动画 226
7.5开发实例:植物生长L系统——缓存区的清除与测试操作 229
本章小结与习题 230
第8章 渲染器的实现 237
8.1实现的基本策略 237
8.2光栅化 238
8.2.1数值微分法 239
8.2.2中点画线法 240
8.2.3 Bresenham画线算法 241
8.3线段裁剪 243
8.3.1 Cohen-Sutherland裁剪算法 243
8.3.2 Liang-Barsky裁剪算法 246
8.4多边形裁剪 249
8.5其他图元的裁剪 252
8.6三维裁剪 253
8.7隐藏面消除 254
8.7.1景物空间和图像空间 254
8.7.2多边形区域排序算法 254
8.7.3背面消除 255
8.7.4深度缓冲器算法 255
8.7.5深度排序算法 256
8.7.6区间扫描线算法 257
8.8多边形的扫描转换 258
8.8.1内外测试法 258
8.8.2区域填充 259
8.8.3种子填充算法 259
8.8.4扫描线种子填充算法 261
8.9植物生长系统——多边形的绘制 261
本章小结与习题 262
第9章 混合、反走样与雾化 263
9.1混合 263
9.1.1源因子和目标因子 263
9.1.2混合的简单使用 266
9.1.3具有深度缓存的三维混合 267
9.2反走样 268
9.2.1行为控制函数 269
9.2.2点和线的反走样 269
9.2.3多边形的反走样 271
9.3雾化 274
9.4植物生长L系统——远景雾化与边界反走样 279
本章小结与习题 280
参考文献 283