第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 OpenGL实用工具库(GLUT)
1.7 动画
1.7.1 暂停刷新
1.7.2 动画=重绘+交换
1.8 OpenGL及其废弃机制
1.8.1 OpenGL渲染环境
1.8.2 访问OpenGL函数
对OpenGL可以实现的功能进行简要的介绍。该章还提供了一个简单的OpenGL程序,并介绍需要了解的一些基本编程细节,有助于学习后续章节的内容。

第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.6.4 重启图元
2.6.5 实例化绘制
2.6.6 混合数组
2.7 缓冲区对象
2.7.1 创建缓冲区对象
2.7.2 激活缓冲区对象
2.7.3 用数据分配和初始化缓冲区对象
2.7.4 更新缓冲区对象的数据值
2.7.5 在缓冲区对象之间复制数据
2.7.6 清除缓冲区对象
2.7.7 使用缓冲区对象存储顶点数组对象
2.8 顶点数组对象
2.9 属性组
2.10 创建多边形表面模型的一些提示
解释如何创建一个物体的三维几何图形描述,并最终把它绘制到屏幕上。

第3章 视图
3.1 简介:用照相机打比方
3.1.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.6.1 模型视图矩阵堆栈
3.6.2 投影矩阵堆栈
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.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.6 定义材料属性
5.6.1 散射和环境反射
5.6.2 镜面反射
5.6.3 发射光颜色
5.6.4 更改材料属性
5.6.5 颜色材料模式
5.7 和光照有关的数学知识
5.7.1 材料的发射光
5.7.2 经过缩放的全局环境光
5.7.3 光源的贡献
5.7.4 完整的光照计算公式
5.7.5 镜面辅助颜色
5.8 颜色索引模式下的光照
解释如何控制围绕一个物体的光照条件,以及这个物体如何对光照做出反应。光照是一个重要的主题,因为物体在没有光照的情况下看上去往往没有立体感。

第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 多边形偏移
描述创建逼真场景所需要的一些基本技巧:alpha混合(创建透明物体),抗锯齿(消除锯齿状边缘),大气效果(模拟雾和烟雾)以及多边形偏移(在着重显示填充多边形的边框时消除不良视觉效果)。

第7章 显示列表
7.1 为什么使用显示列表
7.2 一个使用显示列表的例子
7.3 显示列表的设计哲学
7.4 创建和执行显示列表
7.4.1 命名和创建显示列表
7.4.2 存储在显示列表里的是什么
7.4.3 执行显示列表
7.4.4 层次式显示列表
7.4.5 管理显示列表索引
7.5 执行多个显示列表
7.6 用列表管理状态变量
如何存储一系列的OpenGL命令,用于在以后执行。我们可以使用这个特性来提高OpenGL程序的性能。

第8章 绘制像素,位图,字体和图像
8.1 位图和字体
8.1.1 当前光栅位置
8.1.2 绘制位图
8.1.3 选择位图的颜色
8.1.4 字体和显示列表
8.1.5 定义和使用一种完整的字体
8.2 图像
8.3 图像管线
8.3.1 像素包装和解包
8.3.2 控制像素存储模式
8.3.3 像素传输操作
8.3.4 像素放映
8.3.5 放大,缩小或翻转图像
8.4 读取和绘制像素矩形
8.5 使用缓冲区对象存取像素矩形数据
8.5.1 使用缓冲区对象传输像素数据
8.5.2 使用缓冲区对象提取像素数据
8.6 提高像素绘图速度的技巧
8.7 图像处理子集
8.7.1 颜色表
8.7.2 卷积
8.7.3 颜色矩阵
8.7.4 柱状图
8.7.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 使用纹理边框
9.2.8 mipmap: 多重细节层
9.3 过滤2759.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.13 深度纹理
9.13.1 创建阴影图
9.13.2 生成纹理坐标并进行渲染
解释如何把称为纹理的一维,二维和三维图像映射到三维物体表面。纹理贴图可以实现许多非常精彩的效果。

第10章 帧缓冲区
10.1 缓冲区及其用途
10.1.1 颜色缓冲区
10.1.2 清除缓冲区
10.1.3 选择用于读取和写入的颜色缓冲区
10.1.4 缓冲区的屏蔽
10.2 片段测试和操作
10.2.1 裁剪测试
10.2.2 alpha测试
10.2.3 模板测试
10.2.4 深度测试
10.2.5 遮挡测试
10.2.6 条件渲染
10.2.7 混合,抖动和逻辑操作
10.3 累积缓冲区
10.3.1 运动模糊
10.3.2 景深
10.3.3 柔和阴影
10.3.4 微移
10.4 帧缓冲区对象
10.4.1 渲染缓冲区
10.4.2 复制像素矩阵
描述OpenGL实现中可能存在的所有缓冲区,并解释如何对它们进行控制。我们可以使用这些缓冲区实现诸如隐藏表面消除,模板,屏蔽,运动模糊和景深聚焦等效果。

第11章 分格化和二次方程表面
11.1 多边形分格化
11.1.1 创建分格化对象
11.1.2 分格化回调函数
11.1.3 分格化属性
11.1.4 多边形定义
11.1.5 删除分格化对象
11.1.6 提高分格化性能的建议
11.1.7 描述GLU错误
11.1.8 向后兼容性
11.2 二次方程表面:渲染球体,圆柱体和圆盘
11.2.1 管理二次方程对象
11.2.2 控制二次方程对象的属性
11.2.3 二次方程图元
显示了如何使用GLU(OpenGL Utility Library,OpenGL工具函数库)中的分格化和二次方程函数。

第12章 求值器和NUBRS
12.1 前提条件
12.2 求值器
12.2.1 一维求值器
12.2.2 二维求值器
12.2.3 使用求值器进行纹理处理
12.3 GLU的NUBRS接口
12.3.1 一个简单的NUBRS例子
12.3.2 管理NUBRS对象
12.3.3 创建NUBRS曲线或表面
12.3.4 修建NUBRS表面
介绍生成曲线和表面的高级技巧

第13章 选择和反馈
13.1 选择
13.1.1 基本步骤
13.1.2 创建名字栈
13.1.3 点击记录
13.1.4 一个选择的例子
13.1.5 挑战
13.1.6 编写使用选择的程序的一些建议
13.2 反馈
13.2.1 反馈数组
13.2.2 在反馈模式下使用标记
13.2.3 一个反馈例子
说明如何使用OpenGL的选择机制来选择屏幕上的一个物体。此外,该章还解释了反馈机制,它允许我们收集OpenGL所产生的绘图信息,而不是在屏幕上绘制物体。

第14章 OpenGL高级技巧
14.1 错误处理
14.2 OpenGL版本
14.2.1 工具函数库版本
14.2.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 隐藏直线消除
14.16.1 使用多边形偏移实现隐藏直线消除
14.16.2 使用模板缓冲区实现隐藏直线消除
14.17 纹理贴图的应用
14.18 绘制深度缓冲的图像
14.19 Dirichlet域
14.20 使用模板缓冲区实现生存游戏
14.21 glDrawPixels()和glCopyPixels()的其他应用
描述如何用巧妙的或意想不到的方法来使用OpenGL,产生一些有趣的效果。这些技巧是通过对OpenGL及其技术前驱Silicon Graphics IRIS 图形函数库的多年应用和实践总结出来的。

第15章 OpenGL着色语言
15.1 OpenGL图形管理和可编程着色器
15.1.1 顶点处理
15.1.2 片段处理
15.3 OpenGL着色语言
15.4 使用GLSL创建着色器
15.4.1 程序起点
15.4.2 声明变量
15.4.3 聚合类型
15.5 uniform块
15.5.1 在着色器中指定uniform变量
15.5.2 访问在uniform块中声明的uniform变量
15.5.3 计算不变性
15.5.4 语句
15.5.5 函数
15.5.6 在GLSL程序中使用OpenGL状态值
15.6 在着色器中访问纹理图像
15.7 着色器预处理器
15.7.1 预处理器指令
15.7.2 宏定义
15.7.3 预处理器条件
15.7.4 编译器控制
15.8 扩展处理
15.9 顶点着色器的细节
15.10 变换反馈
15.11 片段着色器
讨论OpenGL2.0所引入的变化,包括对OpenGL着色语言的介绍。OpenGL着色语言通常又称为GLSL,它允许对OpenGL的顶点和片段处理阶段进行控制。这个特性可以极大的提高图像的质量,充分体现OpenGL的计算威力。

附录A GLUT(OpenGL实用工具库)基础知识
讨论了用于处理窗口操作系统的函数库。GLUT(OpenGL实用工具库)具有可移植性,它可以使代码更短,更紧凑。

附录B 状态变量
列出了OpenGL所维护的状态变量,并描述了如何获取它们的值。

附录C 齐次坐标和变换矩阵
介绍了隐藏在矩阵转换后面的一些数学知识。

附录D OpenGL和窗口系统
简单描述了窗口系统特定的函数库所提供的函数,它们进行了扩展,以支持OpenGL渲染。本附录讨论了X窗口系统,Apple的MacOS和Microsoft Windows的窗口系统接口。

参考资料:OpenGL编程指南

目录-OpenGL编程指南相关推荐

  1. 《OpenGL编程指南》一第2章 着色器基础

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...

  2. OpenGL编程指南7:视图-

    1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...

  3. OpenGL编程指南5:学习绘制不同风格的曲线

    1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...

  4. OpenGL编程指南4:双缓冲实现运行

    1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...

  5. OpenGL编程指南3:GLUT:OpenGL使用工具库

    1.前言 我们知道的,OpenGL包含了很多的渲染函数,这些函数的设计目的就是独立与任何窗口系统或操作系统.因此,他并没有包含打开窗口或者从键盘或鼠标读取事件的函数.遗憾的是,如果连最基本的打开窗口的 ...

  6. opengl编程指南第8版源码编译详细说明

    1. 到:https://github.com/openglredbook/examples 下载完全版的源码examples-master.zip,大小有131MB左右,不要下载缩略版的,否则\bi ...

  7. 《OpenGL编程指南(原书第8版)》——计算着色器

    原文  http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...

  8. 《OpenGL编程指南》一第3章 OpenGL绘制方式

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 Op ...

  9. 《OpenGL编程指南》一3.2 OpenGL缓存数据

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  10. OpenGL编程指南(第八版)第一个渲染三角形案例代码在win8双显卡电脑VS2015中运行方法总结

    弄了好几天才把第一个程序运行出来,用该博客记录一下参考的博客资料及问题: 写得很好的博客参考资料为: http://blog.csdn.net/IceTeaSet/article/details/50 ...

最新文章

  1. linux装nginx
  2. python中的装饰器介绍
  3. c#Clay开源的动态语言dynamic框架,让您形如javascript的方式创建对象!
  4. IT 行业的创新 - 创新的迷思 (1-4)
  5. linux多线程学习(二)——线程的创建和退出
  6. SAP License:资产年结
  7. L2-5 集合相似度 (set的应用)
  8. android studio gradle 更新方法。
  9. 新手linux安装vasp_史上最简单的VASP安装教程-非虚拟机
  10. 玩转群晖NAS套件系列一:cloud sync套件的安装与使用保姆级教程!
  11. 计算机三级-数据库技术
  12. pve万兆网卡驱动_WiFi 6扩展有什么选择?Killer AX1650X无线网卡深度测评
  13. 两个路由器的有线桥接与无线桥接
  14. web网页设计期末课程大作业:美食餐饮文化主题网站设计——中华美德6页面HTML+CSS+JavaScript
  15. java拆弹_[逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
  16. 电脑拆机(华硕FL5900)+光驱改固态
  17. Csharp零基础:第一天学Csharp要会的基础知识
  18. ONES × 中国信通院《中国企业软件研发管理白皮书》即将发布 | 预约直播
  19. 手撕Iterator源码
  20. 线上直播 线下分享丨这样的2019 ACOUG年会你绝对喜欢!

热门文章

  1. Smart3D倾斜摄影建模教程
  2. 离散数学 习题篇——生成主范式
  3. 华硕win10键盘失灵_华硕笔记本键盘失灵怎么办win10(Win10的键盘失灵解决办法)...
  4. 华硕笔记本 FX50J Fn热键无效
  5. 《隐秘的角落》:发生在IDC机房的隐秘事件
  6. 干货分享! 20种数学建模方法!
  7. PROSOFT模块MVI56E-MNETC、MVI56-PDPMV1、PTQ-PDPMV1、AN-X2-AB-DHRIO、MVI56-MBP、MVI56-MNETR、MVI56-MNET
  8. 数据结构殷人昆电子版百度云资源_数据结构精讲与习题详解
  9. 关于android studio报错Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.
  10. Java将视频文件、图片文件转Base64编码