第1章 OpenGL图形开发快速入门 1
1.1 OpenGL基础知识 1
1.1.1 OpenGL的历史 1
1.1.2 OpenGL的特点 2
1.2 3D图形学理论入门 2
1.2.1 点 3
1.2.2 向量 4
1.2.3 矩阵 6
1.2.4 变换 8
1.2.5 投影 13
1.2.6 裁剪 15
1.2.7 光照 16
第2章 OpenGL程序框架 18
2.1 窗口渲染环境 18
2.1.1 GDI设备环境 18
2.1.2 OpenGL渲染环境 22
2.2 窗口创建 25
2.2.1 Win32 SDK风格的框架 26
2.2.2 面向对象风格的框架 42
2.3 增加环境设置选项 60
第3章 OpenGL基本图形的绘制 64
3.1 OpenGL的数据类型 64
3.2 函数命名的语法 64
3.3 OpenGL是一种状态机 65
3.4 OpenGL变换 65
3.4.1 视点变换 66
3.4.2 模型变换 67
3.4.3 投影变换 67
3.4.4 视口变换 70
3.4.5 裁剪变换 70
3.5 OpenGL基本图形的绘制 70
3.6 OpenGL基本图元的属性细节 74
第4章 OpenGL颜色及3D图形的绘制 76
4.1 计算机颜色 76
4.2 OpenGL颜色模式 76
4.3 着色模式 77
4.4 顶点数组 77
4.5 3D彩色物体绘制实例 78
第5章 OpenGL光照和材质 83
5.1 光照及材质介绍 83
5.2 OpenGL光照模型 84
5.2.1 法线向量 84
5.2.2 创建光源 85
5.2.3 选择光照模型 87
5.2.4 启用光照 88
5.3 材质 88
5.3.1 材质的定义 88
5.3.2 颜色材质模式 89
5.4 光照实例 90
5.5 材质实例 93
第6章 显示列表 96
6.1 使用显示列表的优势 96
6.2 显示列表的适用场合 96
6.3 创建显示列表 97
6.4 执行显示列表 97
6.5 管理显示列表 98
6.6 显示列表实例 98
第7章 位图和图像 102
7.1 位图 102
7.1.1 位图与字符 102
7.1.2 绘制位图 102
7.1.3 绘制位图实例 103
7.2 图像操作 105
7.2.1 像素读写 105
7.2.2 像素复制 106
7.2.3 像素缩放 107
7.2.4 像素操作实例 107
第8章 纹理映射 110
8.1 简介 110
8.2 纹理映射的过程 110
8.2.1 纹理定义 110
8.2.2 纹理控制 111
8.2.3 纹理映射方式 112
8.2.4 指定纹理坐标 113
8.2.5 纹理对象 114
8.3 纹理资源载入 114
8.3.1 BMP位图介绍 114
8.3.2 TGA介绍 116
8.3.3 纹理资源的载入 118
8.4 纹理映射实例 121
第9章 混合 126
9.1 混合因子 126
9.2 启用混合 127
9.3 实现步骤 127
9.4 混合实例 128
第10章 字体 132
10.1 OpenGL显示英文字体 132
10.1.1 平面文字的显示 132
10.1.2 立体文字的显示 137
10.2 OpenGL显示中文 142
10.2.1 3D文字的显示 142
10.2.2 平面文字的显示 145
第11章 反走样 150
11.1 行为控制 150
11.2 点和直线的反走样 151
11.3 多边形的反走样 152
第12章 雾 156
12.1 概述 156
12.2 启用雾 156
12.3 设置雾的属性 156
12.4 雾坐标 157
12.5 雾效实例 158
第13章 网格化 163
13.1 网格化步骤 163
13.2 创建网格化对象 163
13.3 网格化回调函数 164
13.4 网格化属性 165
13.5 定义多边形 166
13.6 删除网格化对象 166
13.7 网格化实例 166
第14章 二次几何体 176
14.1 渲染二次几何体步骤 176
14.2 二次对象 176
14.3 二次对象的属性 176
14.4 二次图元 177
14.5 实例 178
第15章 贝赛尔曲线和曲面 183
15.1 求值程序 183
15.2 贝赛尔曲线 183
15.2.1 启用求值程序 183
15.2.2 定义一维求值程序 183
15.2.3 执行一维求值程序 184
15.2.4 贝赛尔曲线实例 185
15.3 贝赛尔曲面 186
15.3.1 启用求值程序 186
15.3.2 定义二维求值程序 186
15.3.3 执行二维求值程序 187
15.3.4 贝赛尔曲面实例 187
第16章 多重纹理 191
16.1 OpenGL扩展 191
16.1.1 扩展名 191
16.1.2 使用OpenGL扩展 192
16.2 多重纹理 192
16.3 多重纹理实例 193
第17章 凹凸映射 201
17.1 凹凸映射的一般原理 201
17.1.1 介绍 201
17.1.2 切空间 201
17.1.3 原理 202
17.2 浮雕凹凸映射 202
17.2.1 原理 202
17.2.2 实现方法 203
17.3 本章实例 204
第18章 环境映射 217
18.1 环境映射介绍 217
18.2 环境映射分类 218
18.2.1 球形映射 218
18.2.2 立方体映射 219
18.3 环境映射实例 220
18.3.1 Sphere Mapping实例 220
18.3.2 Cube Mapping实例 227
第19章 镜面反射 232
19.1 模板缓存 232
19.1.1 模板缓存的启用 232
19.1.2 设置、清除模板缓存区 233
19.1.3 模板测试 233
19.2 镜面反射实例 235
第20章 阴影 240
20.1 介绍 240
20.2 阴影生成方法 240
20.2.1 平面投射 240
20.2.2 阴影图 241
20.2.3 阴影体 242
20.3 阴影实例 243
20.3.1 平面投射实例 243
20.3.2 阴影体实例 248
第21章 拾取 257
21.1 介绍 257
21.1.1 基本步骤 257
21.1.2 名字栈 258
21.1.3 命中记录 259
21.1.4 拾取 259
21.2 拾取实例 260
第22章 骨骼动画 267
22.1 介绍 267
22.2 骨骼蒙皮动画 268
22.2.1 基本原理 268
22.2.2 实现 268
22.3 本章实例 269
第23章 摄像机漫游 278
23.1 介绍 278
23.2 摄像机漫游 278
23.3 漫游实例 287
第24章 天空绘制 292
24.1 天空盒 292
24.2 天空顶 293
24.3 天空绘制实例 294
24.3.1 天空盒实例 294
24.3.2 天空顶实例 299
第25章 地形渲染 308
25.1 LOD技术简介 308
25.2 ROAM模型 308
25.3 ROAM简单实例 309
25.4 ROAM地形实例 319
第26章 粒子系统 327
26.1 粒子系统简介 327
26.2 粒子系统类 328
26.3 暴雪实例类 330
第27章 OpenGL着色语言 339
27.1 OpenGL着色语言简介 339
27.2 OpenGL着色语言环境设置 340
27.2.1 着色器创建流程 340
27.2.2 创建一个着色器 341
27.2.3 创建一个程序 342
27.2.4 查询函数与清理工作 344
27.2.5 OpenGL与OpenGL着色语言的通信 346
27.3 GLSL语法基础 349
27.3.1 数据类型 349
27.3.2 变量限定符 350
27.3.3 流控制 350
27.3.4 函数 350
27.4 实例分析 351
27.4.1 GLSL简单实例 351
27.4.2 颜色处理实例 354
27.4.3 变形实例 356
第28章 OpenGL ES应用基础 359
28.1 OpenGL ES和EGL 359
28.1.1 OpenGL ES介绍 359
28.1.2 EGL介绍 360
28.2 OpenGL ES初始化方法 362
28.3 OpenGL ES应用实例 363
28.3.1 OpenGL ES在Windows CE上的使用 363
28.3.2 OpenGL ES在BREW上的使用 364
28.3.3 OpenGL ES在Java上的使用 366
参考文献 368