目录 1
第1章 基础知识 1
1.1 OpenGL API 1
1.2 看待OpenGL的三个角度 2
1.3 OpenGL中有什么 3
1.4 OpenGL的版本和扩展 4
1.5 语言 4
1.6 编程约定 4
1.7 编译 6
1.8 资源 7
1.9 本书面向的读者 8
1.10 各章简介 8
第2章 OpenGL中的二维编程 10
2.1 一个简单程序 10
2.2 GLUT 11
2.3 事件循环和回调函数 12
2.4 描绘一个矩形 13
2.5 更改GLUT默认值 15
2.6 OpenGL中的颜色 15
2.7 GLUT和OpenGL在坐标系统上的差异 17
2.8 二维观视 17
2.9 视见区 18
2.10 坐标系统和转换 19
2.11 simple.c版本2 20
2.12 图元和属性 21
2.13 多边形类型 26
2.14 颜色插补 28
2.15 文本 34
2.16 查询和错误 36
2.17 保存状态 37
2.18 编程练习 38
3.1 重画回调函数 39
第3章 交互与动画 39
3.2 空闲回调函数 40
3.3 一个旋转的正方形 41
3.4 缓存处理 42
3.5 使用键盘 43
3.6 使用鼠标回调函数 44
3.7 鼠标的运动 47
3.8 菜单 48
3.9 空回调函数 49
3.10 子窗口和多窗口 50
3.11 例子:single_double.c 51
3.12 显示列表 53
3.13 拾取模式和选择模式 56
3.14 编程练习 60
第4章 基本的三维程序设计 61
4.1 照相机和对象 61
4.2 OpenGL中的平行投影 63
4.3 观视一个立方体 64
4.4 定位照相机 65
4.5 生成对象 67
4.6 消除隐藏表面 70
4.7 GLU和GLUT对象 72
4.8 透视投影 76
4.9 编程练习 78
第5章 变换 79
5.1 保留线条的变换 79
5.2 同构坐标 80
5.3 模型-观视变换和投影变换 80
5.4 平移 80
5.5 旋转 82
5.6 缩放 84
5.7 一个旋转的立方体 84
5.8 直接设置矩阵 86
5.10 用变换来建模 88
5.9 变换与坐标系统 88
5.11 编程练习 94
第6章 光照和材质 95
6.1 光照-材质交互 95
6.2 Phong模型 96
6.3 OpenGL的光照 97
6.4 定义光源 98
6.5 定义材质 101
6.6 阴影化旋转立方体 102
6.7 控制阴影计算 105
6.8 光滑阴影 105
6.9 法向量的处理 106
6.10 透明性 107
6.11 编程练习 109
7.1 像素和位图 110
第7章 图像 110
7.2 位图 111
7.3 绘制模型 114
7.4 读写像素 116
7.5 选择缓存 119
7.6 像素存储模型 120
7.7 显示PPM图像 120
7.8 使用亮度 125
7.9 像素映射 125
7.10 像素的缩放 126
7.11 OpenGL中的图像处理 128
7.12 编程练习 128
第8章 纹理映射 129
8.1 什么是纹理映射 129
8.2 构造纹理映射 130
8.3 纹理坐标 132
8.4 纹理参数 134
8.5 带纹理的旋转立方体 135
8.6 对表面应用纹理 138
8.7 边界与改变大小 139
8.8 Mipmap 139
8.9 自动纹理坐标生成 141
8.10 纹理对象 144
8.11 图像处理的纹理映射 145
8.12 编程练习 147
第9章 曲线与曲面 148
9.1 参量曲线 148
9.2 参量曲面 149
9.3 贝塞尔曲线与曲面 150
9.4 一维OpenGL求值器 151
9.5 二维求值器 153
9.6 一个交互式示例 154
9.7 其他类型的曲线 155
9.8 Utah茶壶 159
9.9 法向量与阴影化 162
9.10 纹理曲面 163
9.11 编程练习 164
第10章 综合应用与高级技术 165
10.1 一个演示程序 165
10.2 OpenGL的其他特性 176
10.3 缓存 177
10.4 编写可移植、效率高、鲁棒性强的代码 179
第11章 展望未来 180
11.1 版本及其扩展 180
11.2 OpenGL扩展 181
11.3 突破实时图像 182
11.4 可编程管道 183
11.5 阴影语言 185