第1章 OpenGL基础 1
1.1 OpenGL是什么 1
1.2 OpenGL发展历史 1
1.3 OpenGL状态机 2
1.4 OpenGL语法 5
1.5 OpenGL程序流程 6
1.6 OpenGL程序开发 6
1.6.1 用GLUT库进行OpenGL程序开发 6
1.6.2 用Win32API进行OpenGL程序开发 10
1.6.3 使用MFC类库进行OpenGL程序开发 13
1.7 OpenGL的应用 15
1.8 OpenGL与DirectX的对比 16
1.9 小结 17
习题1 18
第2章 二维图形绘制 19
2.1 OpenGL图元 19
2.2 图元属性 23
2.2.1 点划线定义 23
2.2.2 点的尺寸 24
2.2.3 线宽 24
2.3 多边形绘制模式 25
2.3.1 使用点划线 26
2.3.2 边标记 27
2.4 多边形着色模式 28
2.5 小结 28
习题2 29
第3章 三维图形绘制 30
3.1 OpenGL三维绘制流水线 30
3.2 模型变换 31
3.3 视点设置 33
3.4 投影变换 34
3.5 视区变换 36
3.6 小结 38
习题3 38
第4章 几何变换 39
4.1 2D几何变换 39
4.2 仿射变换 39
4.2.1 右手坐标系和左手坐标系 40
4.2.2 推导 40
4.2.3 齐次坐标 41
4.2.4 变换矩阵 41
4.3 组合变换 41
4.4 3D几何变换 42
4.4.1 齐次坐标系 42
4.4.2 推导 43
4.4.3 3D变换矩阵 44
4.4.4 绕任意点旋转 44
4.4.5 绕任意轴旋转 45
4.5 改变坐标系的变换 45
4.6 OpenGL中的几何变换 46
4.6.1 变换矩阵相关函数 47
4.6.2 使用变换 47
4.6.3 层次建模 49
4.7 OpenGL矩阵操作 50
4.7.1 OpenGL矩阵数据格式 50
4.7.2 设置OpenGL矩阵 51
4.7.3 获取当前的矩阵 51
4.8 小结 51
习题4 51
第5章 观察和投影变换 53
5.1 观察变换 53
5.2 投影变换 56
5.2.1 正投影 56
5.2.2 透视投影 58
5.3 小结 61
习题5 61
第6章 光源和材料 63
6.1 OpenGL光源 63
6.1.1 光源 63
6.1.2 光源和材料属性 64
6.2 材料属性 67
6.3 光源与材料的数学关系 67
6.4 照亮场景 68
6.4.1 创建一个光源 68
6.4.2 表面的朝向 69
6.5 创建不同的光源 70
6.5.1 位置和方向光源 70
6.5.2 效果 70
6.5.3 筒灯 71
6.6 材料设置 72
6.7 小结 74
习题6 74
第7章 纹理映射 76
7.1 在多边形上贴纹理 76
7.2 纹理和光照的混合 80
7.3 自动生成纹理坐标 81
7.4 多重纹理 84
7.5 小结 89
习题7 89
第8章 加速渲染——顶点数组、显示列表和顶点缓冲对象 90
8.1 顶点数组(VertexArray) 90
8.2 显示列表(DisplayList) 94
8.3 顶点缓冲对象(VertexBufferObject,VBO) 96
8.4 小结 100
习题8 100
第9章 文字输出 102
9.1 位图文字输出 102
9.2 系统字体文字输出 105
9.3 3D文字输出 108
9.4 汉字输出 109
9.5 小结 111
习题9 111
第10章 反走样 112
10.1 基本概念 112
10.1.1 什么是走样 112
10.1.2 走样产生的原因 112
10.1.3 OpenGL反走样机制 113
10.1.4 OpenGL反走样函数 114
10.2 OpenGL全屏反走样 116
10.2.1 窗口初始化 116
10.2.2 进行绘制 118
10.2.3 效果对比 119
10.3 小结 120
习题10 120
第11章 曲线曲面 122
11.1 二次曲线、曲面 122
11.2 Bezier曲线、曲面 126
11.3 OpenGL求值器 126
11.4 NURBS模型绘制 130
11.5 裁剪NURBS曲面 132
11.6 小结 133
习题11 134
第12章 拾取和反馈 135
12.1 OpenGL中的拾取机制 135
12.1.1 名字堆栈 136
12.1.2 演示代码 137
12.2 OpenGL中的反馈机制 144
12.3 小结 146
习题12 147
第13章 OpenGL缓存 148
13.1 基本概念 148
13.2 如何使用这些缓存 149
13.2.1 清理缓存 149
13.2.2 颜色缓存的使用 150
13.2.3 深度缓存的使用 150
13.2.4 模板缓存的使用 151
13.3 使用Alpha测试绘制透明图片 152
13.3.1 Alpha混合 152
13.3.2 Alpha测试 153
13.3.3 透明图片 153
13.4 阴影映射 155
13.4.1 理论 155
13.4.2 应用 156
13.5 小结 169
习题13 169
第14章 MD2三维模型与动画 171
14.1 MD2文件介绍 171
14.1.1 MD2文件格式 172
14.1.2 开发一个CMD2Mode1类 177
14.1.3 读入MD2模型 180
14.1.4 绘制模型 183
14.1.5 三维模型动画 188
14.2 MD2文件的动画示例 191
14.3 小结 192
习题14 192
第15章 OpenGL着色语言 193
15.1 基本概念 193
15.1.1 绘制流水线 194
15.1.2 顶点处理器 196
15.1.3 片段处理器 196
15.2 为使用OpenGL着色语言进行设置 197
15.3 编写着色器 208
15.3.1 顶点波动的特效 208
15.3.2 像素级光照 210
15.4 小结 214
习题15 214
参考文献 215