书籍详情

OpenGL编程指南(原书第5版)

OpenGL编程指南(原书第5版)

作者:施仁奈;徐波译

出版社:机械工业

出版时间:2006-06-01

ISBN:9787111188889

定价:¥69.00

购买这本书可以去
内容简介
  OpenGL是一种功能强大的软件接口,用于生成高质量的计算机图像,也可以用于编写使用2D和3D物体、位图和彩色图像的交互性应用程序。。本书以清晰的语言描述了OpenGL的功能以及许多基本的计算机图形技巧,例如创建和渲染3D模型、从不同的透视角度观察物体、使用着色、光照和纹理贴图使场景更加逼真等。同时,本书还深入探讨了许多高级技巧,包括纹理贴图、抗锯齿、雾和大气效果、NURBS、图像处理子集等。此外,本书还对一些重要的主题进行了讨论,例如提高性能、’OpenGL扩展以及跨平台技术等。本书对OpenGL以及OpenGL实用函数库提供了全面而又权威的介绍,有“OpenGL红宝书”之誉。第5版在第4版的基础之上进行了重大的修订,涵盖了OpenGL1.5和2.0版本的最新特性,特别是包括对OpenGL着色语言的介绍。..本书实例丰富,内容详实,适合计算机图形应用开发人员参考。第五版在第四版的基础之上进行了重大的修订,涵盖了OpenGL1.5和2.0版本的最新特性,包括:·在缓冲区对象中存储顶点数组,以获得更快的渲染·遮挡查询,测试物体的可见性·取消了纹理图像的宽度和高度必须是2的整数次方的限制·点块纹理·对RGB和颜色索引使用独立的模版操作·使用GLSL渲染到多个缓冲区OpenGL技术资料库(OpenGLTechnicalLibrary)提供了大量的OpenGL教程和参考书籍,它可以帮助程序员深入理解OpenGL,完全释放OpenGL的潜力。这个库最初由SGI开发,目前由OpenGL体系结构审核委员会(ARB)所维护。OpenGLARB是个行业协会,负责OpenGL以及相关技术的发展和演变。OpenGLARB由下面这些计算机图形行业的领先企业所组成:3Dlabs、Apple、ATI、Dell、IBM、Intel、NVIDIA、SGI和SunMicrosystems。
作者简介
  施仁奈是OpenGL体系结构审核委员会成员,是SGL的一位OpenGL工程师,从OpenGL问世以来他就一直从事这方面的研究,并且在计算机图形领域已有15年以上的经验。Dave定期参加SIGGRAPH和其他一些全球性的图形工作会议,也是《OpenGL Reference Manual》一书的作者。
目录
前  言
本书内容
第五版的新增内容
阅读本书所需要的预备知识
如何获取本书示例程序的源代码
Nate Robins的OpenGL教程
勘误表
风格约定
第1章    OpenGL简介
1.1 什么是OpenGL?
1.2 一段简单的OpenGL代码
1.3 OpenGL函数的语法
1.4 OpenGL是个状态机
1.5 OpenGL渲染管线
1.5.1 显示列表
1.5.2 求值器
1.5.3 基于顶点的操作
1.5.4 图元装配
1.5.5 像素操作
1.5.6纹理装配
1.5.7光栅化
1.5.8片断操作
1.6 OpenGL相关的函数库
1.6.1包含文件
1.6.2 GLUT,OpenGL实用工具包
1.7 动画
1.7.1 暂停刷新
1.7.2 动画 = 重绘 + 交换
第2章 状态管理和绘制几何物体
2.1 绘图工具箱
2.1.1 清除窗口
2.1.2 指定颜色
2.1.3 强制完成绘图操作
2.1.4 坐标系统工具箱
2.2描述点、直线和多边形
2.2.1 什么是点、直线和多边形?
2.2.2 指定顶点
2.2.3 OpenGL几何绘图图元
2.3 基本状态管理
2.4 显示点、直线和多边形
2.4.1点的细节
2.4.2直线的细节
2.4.3 多边形的细节
2.5 法线向量
2.6 顶点数组
2.6.1 步骤1:启用数组
2.6.2 步骤2:指定数组的数据
2.6.3 步骤3:解引用和渲染
2.7 缓冲区对象中的顶点数组
2.7.1 利用缓冲区对象存储顶点数据数据
2.7.2 为顶点数据创建缓冲区对象
2.7.3 激活缓冲区对象
2.7.4 用顶点数据分配和初始化缓冲区对象
2.7.5 更新缓冲区对象中的数据值
2.7.6 清除缓冲区对象
2.8 属性组
2.9 关于创建多边形表面模型的一些提示
2.9.1 例子:创建一个二十面体
第3章 视图
3.1 总览:照相机比喻
3.2.1 一个简单的例子:绘制立方体
3.1.2 通用的变换函数
3.2 视图和模型变换
3.2.1 对变换进行思考
3.2.2 模型变换
3.2.3 视图变换
3.3 投影变换
3.3.1 透视投影
3.3.2 正投影
3.3.3 可视空间裁剪
3.4 视口变换
3.4.1 定义视口
3.4.2 变换深度坐标
3.5 和变换相关的故障排除
3.6 操纵矩阵堆栈
3.7 额外的裁剪平面
3.8 一些组合变换的例子
3.8.1 创建太阳系模型
3.8.2 创建机器人手臂
3.9 逆变换和模拟变换
第4章 颜 色
4.1 颜色感知
4.2 计算机颜色
4.3 RGBA和颜色索引模式
4.3.1 RGBA显示模式
4.3.2 颜色索引模式
4.3.3 在RGBA和颜色索引模式中选择
4.3.4 切换显示模式
4.4 指定颜色和着色模型
4.4.1 在RGBA模式下指定颜色
4.4.2 在颜色索引模式下指定颜色
4.4.3 指定着色模型
第5章 光照
5.1 隐藏表面消除工具箱
5.2 现实世界和OpenGL光照
5.2.1 环境光、散射光、镜面光和发射光
5.2.2 材料颜色
5.2.3 光和材料的RGB值
5.3 一个简单的例子:渲染光照球体
5.3.1 为每个物体的每个顶点定义法线向量
5.3.2 创建、定位和启用光源
5.3.3 选择光照模型
5.3.4 为场景中的物体定义材料属性
5.3.5 一些重要注意事项
5.4 创建光源
5.4.1 颜色
5.4.2 位置和衰减
5.4.3 聚光灯
5.4.4 多光源
5.4.5 控制光源的位置和方向
5.5 选择光照模型
5.5.1 全局环境光
5.5.2 局部的观察点或无限远的观察点
5.5.3 双面光照
5.5.4镜面辅助颜色
5.5.5 启用光照
5.5.6 定义材料属性
5.5.7 散射和环境反射
5.5.8 镜面反射
5.5.9 发射光颜色
5.5.10 更改材料属性
5.5.11 颜色材料模式
5.6 光照的数学知识
5.6.1 材料的发射光
5.6.2 经过缩放的全局环境光
5.6.3 光源的贡献
5.6.4 完整的光照计算公式
5.6.5 镜面辅助颜色
5.7 颜色索引模式下的光照
和颜色索引光照模式有关的数学知识
第6章 混合、抗锯齿、雾和多边形偏移
6.1 混合
6.1.1 源因子和目标因子
6.1.2 启用混合
6.1.3 使用混合方程式组合像素
6.1.4 混合的样例用法
6.1.5 一个混合的例子
6.1.6 使用深度缓冲区进行三维混合
6.2 抗锯齿
6.2.1 对点和直线进行抗锯齿处理
6.2.2 使用多重采样对几何图形进行抗锯齿处理
6.2.3 对多边形进行抗锯齿处理
6.3 雾
6.3.1 使用雾
6.3.2 雾方程式
6.4 点参数
6.5 多边形偏移
第7章 显示列表
7.1 为什么使用显示列表?
7.2 一个使用显示列表的例子
7.3 显示列表的设计哲学
7.4 创建和执行显示列表
7.4.1 命名和创建显示列表
7.4.2 存储在显示列表里的是什么?
7.4.3 执行显示列表
7.4.3 层次式显示列表
7.4.4 管理显示列表索引
7.5 执行多个显示列表
7.6 用显示列表管理状态变量
7.6.1 封装模式修改
第8章 绘制像素、位图、字体和图像
8.1 位图和字体
8.1.1 当前光栅位置
8.1.2 绘制位图
8.1.3 选择位图的颜色
8.1.4 字体和显示列表
8.1.5 定义和使用一种完整的字体
8.2 图像
8.2.1 读取、写入和复制像素数据
8.3 图像管线
8.3.1 像素包装和解包
8.3.2 控制像素存储模式
8.3.3 像素传输操作
8.3.4 像素映射
8.3.5 放大、缩小或翻转图像
8.4 读取和绘制像素矩形
8.4.1 像素矩形的绘制过程
8.4.2 像素矩形的读取过程
8.5 提高像素绘图速度的技巧
8.6 图像处理子集
8.6.1 颜色表
8.6.2 卷积
8.6.3 颜色矩阵
8.6.4 柱状图
8.6.5 最小最大值
第9章 纹理贴图
9.1 概述和示例
9.1.1 纹理贴图的步骤
9.1.2 一个示例程序
9.2 指定纹理
9.2.1 纹理代理
9.2.2 替换纹理图像的全部或一部分
9.2.3 一维纹理
9.2.4 三维纹理
9.2.5 压缩纹理数据
9.2.6 使用纹理边框
9.2.7  Mipmap:多重细节层
9.3 过滤
9.4 纹理对象
9.4.1 命名纹理对象
9.4.2 创建和使用纹理对象
9.4.3 清除纹理对象
9.4.4 常驻纹理工作集
9.5 纹理函数
9.6 分配纹理坐标
9.6.1 计算正确的纹理坐标
9.6.2 重复和截取纹理
9.7纹理坐标自动生成
9.7.1 创建轮廓线
9.7.2 球体纹理
9.7.3 立方图纹理
9.8 多重纹理
9.9 纹理组合器函数
插值组合器函数
9.10 在纹理之后应用辅助颜色
9.10.1 在禁用光照时使用辅助颜色
9.10.2 启用光照后的辅助镜面颜色
9.11 纹理矩阵堆栈
9.12 深度纹理
9.12.1 创建阴影图
9.12.2 生成纹理坐标并进行渲染
第10章 帧缓冲区
10.1 缓冲区及其用途
10.1.1 颜色缓冲区
10.1.2 深度缓冲区
10.1.3 模版缓冲区
10.1.4 累积缓冲区
10.1.5 清除缓冲区
10.1.6 选择用于读取和写入的颜色缓冲区
10.1.7 缓冲区的屏蔽
10.2 片断的测试和操作
10.2.1 裁剪测试
10.2.2  alpha测试
10.2.3 模版测试
10.2.4 深度测试
10.2.5 遮挡查询
10.2.6 混合、抖动和逻辑操作
10.3 累积缓冲区
10.3.1 场景抗锯齿
10.3.2 运动模糊
10.3.3 景深效果
10.3.4 柔和阴影
10.3.5 微移
第11章 分格化和二次方程表面
11.1 多边形分格化
11.1.1 创建分格化对象
11.1.2 分格化回调函数
11.1.3 分格化属性
11.1.4 多边形定义
11.1.5 删除分格化对象
11.1.6 提高分格化性能的建议
11.2 描述GLU错误
11.3 向后兼容性
11.2 二次方程表面:渲染球体、圆柱体和圆盘
11.2.1 管理二次方程对象
11.2.2 控制二次方程对象的属性
11.2.3 二次方程图元
第12章 求值器和NURBS
12.1 前提条件
12.2 求值器
12.2.1 一维求值器
12.2.2 二维求值器
12.2.3 使用求值器进行纹理处理
12.3 GLU的NURBS接口
12.3.1 一个简单的NURBS例子
12.3.2 管理NURBS对象
12.3.3 创建NURBS曲线或表面
12.3.4 修剪NURBS表面
第13章 选择和反馈
13.1 选择
13.1.1 基本步骤
13.1.2 创建名字堆栈
13.1.3 点击记录
13.1.4 一个选择例子
5.1.4 挑选(pick)
5.1.5 编写使用选择的程序的一些建议
13.2 反馈
13.2.1 反馈数组
13.2.2 在反馈模式下使用标记
13.2.3 一个反馈例子
第14章 OpenGL高级技巧
14.1 错误处理
14.2 OpenGL版本
14.2.1 工具库版本
14.2.2 窗口系统扩展版本
14.3 标准的扩展
Microsoft Windows的标准扩展(WGL)
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 隐藏直线消除
14.17 纹理贴图的应用
14.18 绘制深度缓冲的图像
14.19 Dirichlet域
14.20使用模版缓冲区实现生存游戏
14.21 glDrawPixels()和glCopyPixels()的其它应用
第15章 OpenGL 2.0和OpenGL着色语言
15.1 为什么要使用OpenGL 2.0?
15.2 点块纹理
15.3 OpenGL图形管线和可编程着色管线
15.3.1 顶点处理
15.3.2 片断处理
15.4 使用GLSL着色器
15.4.1 着色器示例
15.4.2  OpenGL/GLSL接口
15.5 OpenGL着色语言
15.6 使用GLSL创建着色器
15.6.1 程序起点
15.6.2 声明变量
15.6.3 聚合类型
15.6.4 语句
15.6.5 函数
15.6.6 在GLSL程序中使用OpenGL状态值
15.7 在着色器中使用纹理贴图
15.7.1 顶点着色器的细节
15.7.2 片断着色器
附录A :操作顺序
A.1概述
A.2几何操作
A.2.1基于顶点的操作
A.2.2图元装配
A.3像素操作
纹理内存
A.4片断操作
A.5其它细节
附录B 状态变量
B.1查询函数
B.2 OpenGL状态变量
B.2.1 当前值和相关的数据
B.2.1 顶点数组
B.2.3 变换
B.2.4颜色
B.2.5 光照
B.2.6光栅化
B.2.7 多重采样
B.2.8 纹理
B.2.9 像素操作
B.2.10 帧缓冲区控制
B.2.11像素
B.2.12求值器
B.2.13提示
B.2.14因实现而异的值
B.2.15 因实现而异的像素深度
B.2.16 其它状态变量
附录C  OpenGL和窗口系统
C.1访问新的OpenGL函数
C.2 X窗口系统的OpenGL扩展(GLX)
C.2.1初始化
C.2.2控制渲染
C2.3 GLX库函数的原型
C.3 AGL:Apple Macintosh的OpenGL扩展
C.3.1初始化
C.3.2渲染和渲染环境
C.3.3管理OpenGL渲染环境
C.3.4在屏幕上渲染
C.3.5离屏渲染
C.3.6全屏渲染
C.3.7交换缓冲区
C.3.8更新渲染缓冲区
C.3.9使用Apple Macintosh字体
C.3.10错误处理
C.3.11 AGL库函数的原型
C.4 PGL:IBM OS/2 Warp的OpenGL扩展
C.4.1初始化
C.4.2控制渲染
C.4.3 PGL函数的原型
C.5 WGL:Microsoft Windows 95/98/NT/ME/2000/XP的OpenGL扩展
C.5.1初始化
C.5.2控制渲染
WGL函数的原型
附录D  GLUT(OpenGL实用工具库)基础知识
D.1初始化和创建窗口
D.2处理窗口和输入事件
D.3载入颜色表
D.4初始化和绘制三维物体
D.5管理背景过程
D.6运行程序
附录E 计算法线向量
E.2计算解析表面的法线
E.2根据多边形数据计算法线
附录F 齐次坐标和变换矩阵
F.1 齐次坐标
F.1.1 变换顶点
F.1.2 法线变换
F.2 变换矩阵
F.2.1 移动
F.2.2 缩放
F.2.3 旋转
F.2.4 透视投影
F.2.5 正投影
附录G 编程提示
G.1 OpenGL的正确编程技巧
G.2提高OpenGL性能的建议
G.3使用GLX的建议
附录H  OpenGL的不变性规则
附录I OpenGL着色语言内置的变量和函数
I.1变量
I.1.1 顶点着色器输入属性变量
I.1.2 顶点着色器特殊输出变量
I.1.3 顶点着色器的varying输出变量
I.1.4 内置的实现常量
I.1.5 内置的uniform状态变量
I.2 内置的函数
I.2.1 角度转换和三角函数
I.2.2 超越函数(transcendental function)
I.2.3 基本的数值函数
I.2.4 向量操作函数
I.2.5 矩阵函数
I.2.6 向量成分关系函数
I.2.7 纹理查找函数
I.2.8 片断处理函数
I.2.9 噪声函数
猜您喜欢

读书导航