OpenGL图形程序设计指南
2001-10
中国水利水电出版社
陈岩涛
460
652
无
本书系统介绍了OpenGL图形程序设计方法。作者从基本的计算机图形学原理开始,由浅入深,详细阐述了OpenGL高级图形程序设计的方方面面。本书贯穿了大量的编程实例,兼顾了PC机和工作站用户,为读者提供了渲染平台与建模平台的程序接口,并介绍了目前广泛应用的三维分形地形图的生成方法。因此,本书具有很强的实用性。
前言
第1章 OpenGL入门
1.1 OpenGL概览
1.2 简单的OpenGL程序举例
1.3 基本OpenGL操作
1.4 OpenGL的命令语法
1.5 作为状态机的OpenGL
1.6 OpenGL相关函数库
1.6.1 OpenGL相关函数库简介
1.6.2 OpenGL辅助库(GLAUX)
1.7 动画
第2章 Windows 95及Windows NT环境下开发OpenGL应用程序的基本过程
2.1 开发环境
2.1.1 系统硬件配置要求
2.1.2 开发OpenGL应用程序的软件要求
2.2 OpenGL应用程序开发基本过程
2.2.1 源代码的编写
2.2.2 Win32控制台风格应用程序的开发
2.2.3 Win32 MFC风格应用程序的开发
第3章 实体建模基础
3.1 一个绘图补救工具包
3.1.1 清除窗口
3.1.2 指定颜色
3.1.3 完成绘图
3.1.4 隐藏面的消除
3.2 点、线和多边形的描述
3.2.1 点、线和多边形的定义
3.2.2 定义顶点
3.2.3 OpenGL的几何绘图图元
3.2.4 使用glBegin()和glEnd()的限制
3.3 显示点、线和多边形
3.3.1 关于点的细节
3.3.2 关于线的细节
3.3.3 关于多边形的细节
3.4 法线向量
3.5 创建表面的多边形模型需注意的问题
第4章 视图
4.1 概述:照相机类比法
4.1.1 照相机类比法及其在计算机中的实现
4.1.2 一个简单的例子:绘制立方体
4.1.3 多种用途的变换函数
4.2 视图变换和模型变换
4.2.1 关于变换的说明
4.2.2 模型变换
4.2.3 视图变换
4.3 投影变换
4.3.1 透视投影
4.3.2 正交投影
4.3.3 视图体的裁剪
4.4 视区变换
4.4.1 定义视区
4.4.2 变换后的Z坐标
4.5 变换的诊断
4.6 矩阵堆栈的操作
4.6.1 模型视图矩阵堆栈
4.6.2 投影矩阵堆栈
4.7 附加裁剪平面
4.8 组合变换举例
4.8.1 建立一个太阳系模型
4.8.2 建立一个有关节的机器人手臂模型
第5章 显示列表
5.1 一个使用显示列表的范例
5.2 显示列表设计准则
5.3 显示列表的创建和执行
5.3.1 显示列表的存储内容
5.3.2 执行显示列表
5.3.3 显示列表的层次结构
5.4 显示列表及其索引的管理
5.5 执行多个显示列表
5.6 封装模式的改变
第6章 颜色
6.1 颜色的感知
6.2 计算机的颜色
6.3 RGBA模式与颜色索引模式
6.3.1 RGBA模式与颜色索引模式的对比
6.3.2 RGBA显示模式
6.3.3 抖动操作
6.3.4 颜色索引显示模式
6.3.5 在RGBA模式与颜色索引模式之间进行选择
6.4 指定颜色和阴影模型
6.4.1 在RGBA模式下指定颜色
6.4.2 在指定颜色索引模式下指定颜色
6.4.3 指定阴影模型
第7章 光照
7.1 真实世界与OpenGL光照
7.1.1 发射光,环境光,散射光和镜面反射光
7.1.2 材料颜色
7.1.3 光线与材质的RGB值
7.2 一个简单的例子:光照球体的渲染
7.2.1 为所有的物体顶点定义法线向量
7.2.2 创建,定位和激活一个或多个光源
7.2.3 选择光照模型
7.2.4 定义场景中物体的材质属性
7.2.5 一些重要说明
7.3 创建光源
7.3.1 颜色
7.3.2 定位和衰减
7.3.3 聚光灯
7.3.4 多光源
7.3.5 控制光源的位置与方向
7.4 选择光照模型
7.4.1 全局环境光
7.4.2 局部或无穷远的视点
7.4.3 双面光照
7.4.4 激活光照
7.5 材料属性的定义
7.5.1 散射和环境光反射
7.5.2 镜面反射
7.5.3 发射光颜色
7.5.4 改变材质属性
7.6 光照的数学计算
7.6.1 材质的发射光
7.6.2 放大的全局环境光
7.6.3 光源的贡献
7.6.4 聚光灯效果
7.6.5 环境光项
7.6.6 散射光项
7.6.7 镜面反射光项
7.6.8 求和
7.6.9 颜色索引模式下的光照
7.6.10 颜色索引模式下光照的数学计算
第8章 混合、反走样、雾
8.1 混合
8.1.1 源因子和目标因子
8.1.2 混合的简单使用
8.1.3 混合操作范例
8.1.4 具有深度缓存的三维混合
8.2 反走样
8.2.1 点和线的反走样
8.2.2 多边形的反走样
8.3 雾
8.3.1 雾的使用
8.3.2 雾的方程
第9章 绘制像素、位图、字体和图像
9.1 位图和字体
9.1.1 当前光栅位置
9.1.2 绘制位图
9.1.3 字体和显示列表
9.1.4 一个完整的字体定义和使用
9.2 图像
9.2.1 像素数据的读、写和拷贝
9.2.2 图像的放大与缩小
9.3 像素的存储、变换和映射
9.3.1 像素模式概论
9.3.2 像素存储控制模式
9.3.3 像素传递操作
9.3.4 像素矩形
9.3.5 像素读取过程详解
9.3.6 像素映射
第10章 纹理映射
10.1 概述及范例
10.1.1 纹理映射的步骤
10.1.2 一个简单的程序
10.2 指定纹理
10.2.1 使用纹理边界
10.2.2 细节等级(Level of Details)
10.2.3 控制过滤
10.2.4 一维纹理
10.3 调节和混合
10.4 分配纹理坐标
10.4.1 计算纹理坐标
10.4.2 纹理的重复和截取
10.5 自动纹理坐标生成
10.5.1 创建轮廓
10.5.2 环境映射
10.6 高级特性
10.6.1 纹理矩阵堆栈
10.6.2 纹理的q坐标
第11章 帧缓存
11.1 缓存及其使用
11.1.1 各种缓存概述
11.1.2 清空缓存
11.1.3 为写操作选择颜色缓存
11.1.4 缓存屏蔽
11.2 片原的测试与操作
11.2.1 剪取测试
11.2.2 alpha测试
11.2.3 模板测试
11.2.4 深度测试
11.2.5 混合,抖动及逻辑操作
11.3 累积缓存
11.3.1 场景反走样
11.3.2 运动模糊度
11.3.3 景深
11.3.4 柔和阴影
11.3.5 抖动
第12章 求值程序和非均匀有理B样条(NURBS)
12.1 概述
12.2 求值程序
12.2.1 一维求值程序
12.2.2 二维求值程序
12.3 GLU的NURBS接口程序
12.3.1 简单的NURBS范例
12.3.2 修剪
第13章 选择机制
13.1 选择
13.1.1 基本步骤
13.1.2 创建命名堆栈
13.1.3 选中记录
13.1.4 一个选择的实例
13.1.5 拾取
13.1.6 用多个命名和分层模型进行拾取
13.1.7 拾取和深度值
13.1.8 在编程中使用选择机制的一些提示
13.2 反馈
13.2.1 反馈数组
13.2.2 在反馈模式下使用标记
13.2.3 一个反馈的例子
第14章 OpenGL应用及提高应用程序性能的技巧
14.1 轻松制作透明物体
14.2 轻松实现淡出效果
14.3 利用后缓存进行物体选择
14.4 方便的图像变换
14.5 分层显示
14.6 字符反走样
14.7 绘制圆形的点
14.8 插入图像
14.9 制作贴花
14.10 用模板缓存绘制填充的凹多边形
14.11 确定重叠区域
14.12 阴影
14.13 消除隐藏线
14.14 纹理映射的应用
14.15 绘制深度缓存图像
14.16 笛里希累(Dirichlet)域
14.17 生命游戏(Life Game)
14.18 交替使用glDrawPixels()和glCopyPixels()
第15章高级应用(一):OpenGL与AutoCAD的图形接口
15.1 AutoCAD简介
15.2 DXF文件分析
15.2.1 DXF文件的基本结构
15.2.2 实体段分析
15.3 DXF接口程序的编写
15.4 OpenGL的DXF扩展库函数的制作
15.5 高级应用实例
第16章 高级应用(二):三维随机分形地形的生成
16.1 分形的基本原理
16.1.1 自相似
16.1.2 一维中点变换
16.1.3 Diamond-Square算法
16.1.4 蓝天白云的生成
16.2 分形地形生成实例
16.2.1 程序的运行
16.2.2 代码结构分析
附录1 OpenGL中的操作顺序
附1.1 概述
附1.2 几何操作
附1.2.1 顶点操作
附1.2.2 图元装配
附1.3 像素操作
附1.4 片元操作
附1.5 补充说明
附录2 OpenGL状态变量
附2.1 查询命令
附2.2 出错处理
附2.3 状态变量的保存和恢复
附2.4 OpenGL的状态变量
附2.4.1 当前值和相关数据
附2.4.2 变换
附2.4.3 颜色
附2.4.4 光照
附2.4.5 光栅化
附2.4.6 纹理
附2.4.7 像素操作
附2.4.8 帧缓存控制
附2.4.9 像素
附2.4.10 求值程序
附2.4.11 提示
附2.4.12 依赖执行的值
附2.4.13 像素深度
附2.4.14 混合
附录3 OpenGL实用库
附3.1 纹理映射中的图像操作
附3.2 变换坐标
附3.3 多边形网格化
附3.4 回调机制
附3.5 网格化物体
附3.6 指定回调函数
附3.7 描述网格化多边形
附3.8 渲染球体、圆柱和圆盘
附3.9 NURBS曲线和曲面
附3.10 错误的描述
附录4 OpenGL对X窗口系统的扩展
附4.1 初始化
附4.2 控制渲染
附4.2.1 管理OpenGL渲染内容
附4.2.2 后台渲染
附4.2.3 同步执行
附4.2.4 交换缓存
附4.2.5 使用X字体
附4.3 GLX库函数原型
附录5 OpenGL辅助库
附5.1 初始化及退出窗口
附5.2 处理窗口和输入事件
附5.3 装载颜色图
附5.4 初始化和绘制三维物体
附5.5 管理后台进程
附5.6 运行程序
附录6 计算法线向量
附6.1 为解析表面确定法线
附6.2 由多边形数据确定法线
附录7 齐次坐标与变换矩阵
附7.1 齐次坐标
附7.2 变换
附7.2.1 顶点变换
附7.2.2 法线变换
附7.2.3 变换矩阵
附录8 OpenGL编程要点
附8.1 OpenGL正确编程技巧
附8.2 提高OpenGL程序性能
附8.3 GLX的技巧
附录9 OpenGL的不变性
附录10 术语表
A
B
C
D
E
F
G
H
I
L
M
N
o
P
R
S
T
V
X
无