第一部分 0penGLAPI基础
第1章 3D图形学的基本原理
1. 1 简介
1. 2 计算机图形学简史
1. 2. 1 进入CRT
1. 2. 2 3D概念
1. 3 3D效果研究
1. 3. 1 透视法
1. 3. 2 色彩和明暗
1. 3. 3 光照和明暗处理
1. 3. 4 纹理贴图
1. 3. 5 雾化
1. 3. 6 混合和透明度
1. 3. 7 消除锯齿
1. 4 3D图形的常见用途
1. 4. 1 实时3D
1. 4. 2 非实时3D
1. 5 3D编程基本原理
1. 5. 1 直接模式和保留模式(场景图)
1. 5. 2 坐标系
1. 5. 3 投影:将3D变为2D
1. 6 小结
第2章 什么是OpenGL
2. 1 标准的演变
2. 1. 1 OpenGLARB
2. 1. 2 使用许可和一致性
2. 1. 3 OpenGL的未来
2. 2 OpenGL的工作方式
2. 2. 1 通用实现
2. 2. 2 硬件实现
2. 2. 3 流水线
2. 2. 4 状态机
2. 3 小结
第3章 使用OpenGL
3. 1 本章主要内容
3. 2 OpenGL是API, 不是语言
3. 2. 1 库和头文件
3. 2. 2 硬件加速
3. 2. 3 其他实现
3. 3 API的规定
3. 3. 1 数据类型
3. 3. 2 函数命名约定
3. 4 平台无关性
3. 4. 1 使用GLUT
3. 4. 2 设置编程环境
3. 5 第一个程序
3. 5. 1 头文件
3. 5. 2 主体
3. 5. 3 OpenGL图形调用
3. 6 用OpenGL绘制图形
3. 6. 1 绘制矩形
3. 6. 2 窗口的缩放比例
3. 7 应用OpenGL和GLUT制作动画
3. 8 3D效果
3. 9 小结
3. 10 参考函数
3. 10. 1 g1C1earColor
3. 10. 2 glFlush
3. 10. 3 g1Ortho
3. 10. 4 glViewport
3. 10. 5 glRect
3. 10. 6 glutCreateWindow
3. 10. 7 glutDisplayFunc
3. 10. 8 glutInitDisplayMode
3. 10. 9 glutKeyboardFunc
3. 10. 10 glutMainLoop
3. 10. 12 glutReshapeFunc
3. 10. 13 glutPostRedisplay
3. 10. 14 glutSolidCone, glutWireCone
3. 10. 15 glutSolidCube, glutWireCube
3. 10. 16 glutSolidDodecahedron, glutWirsDodecahedron
3. 10. 17 glutSolidIcosahedron, glutgWireIcosahedron
3. 10. 18 glutSolidOctahedron, glutWireoctahedron
3. 10. 19 glutSo1idSphere, glutWireSphere
3. 10. 20 glutSolidTetrahedron, glutWireTetrahedron
3. 10. 21 glutSolidTorus, glutWireTorus
3. 10. 22 glutSolidTeapot, glutWireTeapot
3. 10. 23 glutSpecialFunc
3. 10. 24 glutSwapBuffers
3. 10. 25 glutTimererFunc
第4章 在空间中绘图:线. 点和多边形
4. 1 本章主要内容
4. 2 在3D中画点
4. 3 设置3D画布
4. 4 一个3D点:顶点
4. 5 开始绘制
4. 6 设置点的大小
4. 7 在3D中画线
4. 7. 1 线段的跨接和循环
4. 7. 2 用直线逼近曲线
4. 7. 3 设置线宽
4. 7. 4 点画线
4. 8 在3D中画三角形
4. 8. 1 三角形:第一个多边形
4. 8. 2 绕法
4. 8. 3 三角条
4. 8. 4 三角扇形
4. 9 建立实心对象
4. 9. 1 设置多边形的颜色
4. 9. 2 移除被挡住的表面
4. 9. 3 剔除:为了性能而隐藏表面
4. 9. 4 多边形模式
4. 10 其他图元
4. 10. 1 四个边的多边形:四边形
4. 10. 2 通用多边形
4. 10. 3 填充多边形或点画修改
4. 10. 4 多边形的构造规则
4. 10. 5 剖面和边缘
4. 11 小结
4. 12 参考函数
4. 12. 1 g1Begin
4. 12. 2 g1CutFace
4. 12. 3 g1EdgeFlag
4. 12. 4 glEnd
4. 12. 5 glFrontFace
4. 12. 6 g1GetPo1ygonStipple
4. 12. 7 glLineStipple
4. 12. 8 glLineWidth
4. 12. 9 g1PointSize
4. 12. 10 g1Po1ygonMode
4. 12. 11 g1Po1ygonStipple
4. 12. 12 g1Vertex
第5章 在空间中移动:坐标变换
5. 1 本章主要内容
5. 2 本章与数学
5. 3 了解变换
5. 3. 1 眼坐标
5. 3. 2 视图变换
5. 3. 3 模型变换
5. 3. 4 模型视图的对偶性
5. 3. 5 投影变换
5. 3. 6 视见区变换
5. 4 矩阵
5. 4. 1 什么是矩阵
5. 4. 2 变换的流程图
5. 4. 3 模型视图矩阵
5. 4. 4 单位矩阵
5. 4. 5 矩阵堆栈
5. 4. 6 原子核示例
5. 5 使用投影
5. 5. 1 正射投影
5. 5. 2 透视投影
5. 5. 3 一个非常前卫的示例
5. 6 高级矩阵处理
5. 6. 1 如载矩阵
5. 6. 2 执行自己的变换
5. 6. 3 其他变换
5. 7 小结
5. 8 参考函数
5. 8. 1 glFrustum
5. 8. 2 glLoadIdentity
5. 8. 3 glLoadMatrix
5. 8. 4 glMatrixMode
5. 8. 5 glMultMatrix
5. 8. 6 g1PopMatrix
5. 8. 7 glPushMatrix
5. 8. 8 g1Rotate
5. 8. 9 g1Scale
5. 8. 10 g1Translate
5. 8. 11 gluLookAt
5. 8. 12 gluOrtho2D
5. 8. 13 gluPerspective
第6章 颜色. 光照和材质
6. 1 本章主要内容
6. 2 何谓颜色
6. 2. 1 光是一种光波
6. 2. 2 光是一种粒子
6. 2. 3 人的光子侦测器
6. 2. 4 计算机作为光子生成器
6. 3 PC机的颜色硬件
6. 4 PC机的显示模式
6. 4. 1 屏幕分辨率
6. 4. 2 颜色深度
6. 5 在OpenGL中使用颜色
6. 5. 1 颜色立方体
6. 5. 2 设置绘图颜色
6. 5. 3 明暗处理
6. 5. 4 设置明暗处理模型
6. 6 现实世界中的颜色
6. 6. 1 环境光
6. 6. 2 散射光
6. 6. 3 镜面光
6. 6. 4 不同光源混合
6. 7 现实世界中的材质
6. 7. 1 材质属性
6. 7. 2 给材质加光线
6. 7. 3 计算环境光的效果
6. 7. 4 散射光和镜面光的效果
6. 8 场景中加光线
6. 8. 1 使光源生效
6. 8. 2 设置光照模型
6. 8. 3 设置材质属性
6. 9 使用光源
6. 9. 1 选择方法
6. 9. 2 法线矢量
6. 9. 3 指定一条法线
6. 9. 4 单位法线
6. 9. 5 找法线
6. 9. 6 设置光源
6. 9. 7 设置材质属性
6. 9. 8 指定多边形
6. 10 光照效果
6. 10. 1 镜面光的亮斑
6. 10. 2 镜面光
6. 10. 3 镜面光反射率
6. 10. 4 镜面指数
6. 10. 5 法线的平均
6. 11 所有效果的综合
6. 11. 1 创建聚光灯
6. 11. 2 绘制聚光灯
6. 12 阴影
6. 12. 1 何谓阴影
6. 12. 2 压平物体的代码
6. 12. 3 一个阴影示例
6. 13 一小结
6. 14 参考函数
6. 14. 1 glColor
6. 14. 2 glColorMask
6. 14. 3 g1ColorMaterial
6. 14. 4 gtCullFace
6. 14. 5 glFrontFace
6. 14. 6 glGetMaterial
6. 14. 7 glGetLight
6. 14. 8 glLight
6. 14. 9 glLightModel
6. 14. 10 glWaterial
6. 14. 11 glNormal
6. 14. 12 g1ShadeModel
第二部分 OpeoGL渲染组成
第7章 OpenGL中的光栅图形
7. 1 本章主要内容
7. 2 绘制位图
7. 3 位图字体
7. 3. 1 建立简单的字体库
7. 3. 2 删除位图字体
7. 3. 3 使用位图字体绘制
7. 3. 4 显示格式化的文本
7. 3. 5 简单的文本绘制程序
7. 4 彩色位图——像素贴图
7. 5 Windows. BMP文件查看器
7. 5. 1 关于Windows位图文件
7. 5. 2 读取. BMP文件
7. 5. 3 显示位图
7. 5. 4 缩放图像
7. 6 使用透明度绘制图像
7. 7 绘制索引图像
7. 8 拍摄图像的全景
7. 9 读取图像
7. 10 复制图像
7. 11 编写. BMP文件
7. 12 小结
7. 13 参考函数
7. 13. 1 glCopyPixels
7. 13. 2 gmrawPixels
7. 13. 3 glPixeMap
7. 13. 4 glPixelStore
7. 13. 5 glPixelTranskr
7. 13. 6 glPixelZoom
7. 13. 7 glReadPixels
第8章 纹理贴图
8. 1 本章主要内容
8. 2 纹理贴图基础
8. 3 定义纹理图像
8. 3. 1 定义1D纹理
8. 3. 2 定义2D纹理
8. 3. 3 纹理模式
8. 3. 4 纹理滤镜
8. 3. 5 纹理坐标
8. 3. 6 纹理绕转
6. 4 综合应用——1D纹理示例
8. 5 2D纹理示例
8. 6 使用多个纹理图像
8. 6. 1 管理纹理对象
8. 6. 2 在内存中保存纹理对象
8. 6. 3 一个简单的纹理对象加载器
8. 7 地形查看程序
8. 8 自动生成纹理坐标
8. 9 多贴图的纹理
8. 9. 1 定义多贴图纹理
8. 9. 2 自动生成多贴图
8. 9. 3 控制细节的级别
8. 9. 4 在地形查看器中添加多贴图
8. 10 使用纹理加光照效果
8. 11 替换纹理图像数据
8. 12 3D纹理
8. 13 小结
8. 14 参考函数
8. 14. 1 g1TexCoord
8. 14. 2 g1TexEnv
8. 14. 3 glTexGen
8. 14. 4 G1TexImagelD
8. 14. 5 G1TexImage2D
8. 14. 6 GlTexlmage3D
8. 14. 7 g1TexParameter
第9章 3D建模与物体台成
9. 1 本章主要内容
9. 2 确定任务
9. 2. 1 选择投影
9. 2. 2 选择光照和材料属性
9. 2. 3 显示结果
9. 3 构造模型——每次创建一个部件
9. 3. 1 螺帽
9. 3. 2 螺杆
9. 3. 3 螺纹
9. 3. 4 组合模块
9. 4 预处理模型
9. 4. 1 显示表
9. 4. 2 纹理数组
9. 4. 3 顶点数组显示表
9. 5 小结
9. 6 参考函数
9. 6. 1 glArrayElement
9. 6. 2 glDrawArrays
9. 6. 3 g1EnableClientShte/gmisableClientState
9. 6. 4 g1CallList
9. 6. 5 g1CalLists
9. 6. 6 g1C010rPointer
9. 6. 7 glDeleteLists
9. 6. 8 glDrawElements
9. 6. 9 glDrawRangeElements
9. 6. 10 glEdgeFlagPointer
9. 6. 11 glEndList
9. 6. 12 glGenLists
9. 6. 13 glInterLeavedArrays
9. 6. 14 glIsList
9. 6. 15 glListBase
9. 6. 16 glNewList
9. 6. 17 glNormalPointer
9. 6. 18 glTexCoordPointer
9. 6. 19 glVertexPointer
第10章 实际效果:混色与雾化
10. 1 本章主要内容
10. 2 混色
10. 2. 1 使用混色方法制作透明效果
10. 2. 2 混色与消除锯齿
10. 2. 3 在画图程序中使用混色
10. 2. 4 再访地形查看程序
10. 3 雾化
10. 3. 1 画具有深度感的茶壶
10. 3. 2 其他雾化类型
10. 3. 3 雾的距离
10. 4 回到地形查看程序
10. 5 小结
10. 6 参考函数
10. 6. 1 glB1endFunc
10. 6. 2 glFog
第11章 缓冲区:不只是为了实现动画
11. 1 本章主要内容
11. 2 缓冲区是什么
11. 2. 1 WIN32环境中的缓冲区
11. 2. 2 设备场境
11. 2. 3 渲染场境
11. 3 利用WIN32函数配置缓冲区
11. 3. 1 获取设备场境
11. 3. 2 设置像素格式
11. 3. 3 创建所需的调色板
11. 3. 4 创建渲染场境
11. 4 利用GLUT函数设置缓冲区
11. 5 选择所需的缓冲区
11. 6 颜色缓冲区
11. 6. 1 双缓冲
11. 6. 2 立体缓冲
11. 6. 3 交换缓冲区
11. 7 深度缓冲区
11. 7. 1 启用深度对比
11. 7. 2 深度对比
11. 7. 3 深度值
11. 7. 4 深度缓冲区的应用
11. 7. 5 深度缓冲区的另一个应用
11. 7. 6 切除部分场景
11. 8 模版缓冲区
11. 8. 1 使用模版缓冲区
11. 8. 2 模版缓冲区函数
11. 8. 3 绘制到模版缓冲区
11. 9 累积缓冲区
11. 9. 1 利用累积缓冲区实现运动模糊
11. 9. 2 利用累积缓冲区实现消除锯齿
11. 9. 3 使用全屏消除锯齿的代价
11. 10 小结
11. 11 参考函数
11. 11. 1 gLAccum
11. 11. 2 glC1earColor
11. 11. 3 glC1earDepth
11. 11. 4 glC1earIndex
11. 11. 5 glC1earStencil
11. 11. 6 glDepthFunc
11. 11. 7 gmepthRange
11. 11. 8 glDrawBuffer
第12章 超越直线和三角形
12. 1 本章主要内容
12. 2 二次曲面
12. 2. 1 改变绘制二次曲面的方式
12. 2. 2 绘制柱体
12. 2. 3 纹理和柱体
12. 2. 4 绘制锥体
12. 2. 5 绘制盘状体
12. 2. 6 盘状体和纹理
12. 2. 7 绘制部分圆盘
12. 2. 8 绘制球体
12. 2. 9 球体和纹理
12. 3 绘制一根铅笔
12. 4 复杂多边形
12. 4. 1 GLUl. 1和GLUl. 2
12. 4. 2 创建镶嵌对象
12. 4. 3 回调函数
12. 4. 4 绘制凹多边形
12. 4. 5 绘制复杂多边形
12. 5 综合使用二次曲面和多边形镶嵌工具
12. 5. 1 建立F—16的模型
12. 5. 2 绘制F—16的模型
12. 6 镶嵌高度场(网格)
12. 6. 1 使用三角长条绘制高度场
12. 6. 2 三角长条方法的加强
12. 6. 3 其他镶嵌算法
12. 7 改进地形查看程序
12. 8 小结
12. 9 参考函数
12. 9. 1 gluCylinder
12. 9. 2 gluDeleteQuadric
12. 9. 3 gluDeleteTess
12. 9. 4 gluDisk
12. 9. 5 gluNewQuadric
12. 9. 6 gluNewTess
12. 9. 7 gluPadialDisk
12. 9. 8 gluQuadricCallback
12. 9. 9 gluQuadricDrawStyle
12. 9. 10 gluQuadricNormals
12. 9. 11 gluQuaddcOrienhtion
12. 9. 12 gluQuaddcTexture
12. 9. 13 gluSphere
12. 9. 14 gluTessBeginContour
12. 9. 15 gluTessBeginPo1ygon
12. 9. 16 gluTessCallback
12. 9. 17 gluTessEndContour
12. 9. 18 gluTessEndPo1ygon
12. 9. 19 gluTessPropeny
12. 9. 20 gluTessVertex
第13章 曲线和曲面
13. 1 本章主要内容
13. 2 曲线和曲面
13. 2. 1 参数表示法
13. 2. 2 控制点
13. 2. 3 连续性
13. 3 求值程序
13. 3. 1 2D曲线
13. 3. 2 计算曲线
13. 3. 3 3D曲面
13. 3. 4 光照和法线矢量
13. 4 NURBS
13. 4. 1 从贝塞尔到B样条
13. 4. 2 结点
13. 4. 3 创建一个NURBS曲面
13. 4. 4 NURBS属性
13. 4. 5 定义曲面
13. 4. 6 修整
13. 4. 7 Nurbs曲线
13. 5 小结
13. 6 参考函数
13. 6. 1 glEvalCoord
13. 6. 2 glEvalMesh
13. 6. 3 glEvalPoint
13. 6. 4 glGetMap
13. 6. 5 glMap
13. 6. 6 glMapGrid
13. 6. 7 gluBeginCurve
13. 6. 8 glUBeginSuuface
13. 6. 9 gluBeginlrnm
13. 6. 10 gluDeleteNurbsRenderer
13. 6. 11 g1UEndCurve
13. 6. 12 gluEndSurface
13. 6. 13 gluEndTrim
13. 6. 14 gluGethrurbsProperty
13. 6. 15 gluLoadSamPhngMatrices
13. 6. 16 gluNewNurbsRenderer
13. 6. 17 gluNurbsCallback
13. 6. 18 gluNurbsCurve
13. 6. 19 gluNurlbsProperty
13. 6. 20 gluNurbsSurface
13. 6. 21 gluPwlCurve
第14章 交互式图形
14. 1 本章主要内容
14. 2 选定
14. 2. 1 命名图元
14. 2. 2 使用选定模式
14. 2. 3 选定缓冲区
14. 2. 4 检选
14. 2. 5 分层检选
14. 3 反馈
14. 3. 1 反馈缓冲区
14. 3. 2 反馈数据
14. 3. 3 处理标记器
14. 4 反馈示例
14. 4. 1 标注反馈对象
14. 4. 2 第一步:选择对象
14. 4. 3 第二步:获取对象的反馈
14. 5 小结
14. 6 参考函数
14. 6. 1 glFeedbackBuger
14. 6. 2 glInitNames
14. 6. 3 glLoadName
14. 6. 4 glPassThrough
14. 6. 5 glPopName
14. 6. 6 glPushName
14. 6. 7 glRenderMode
14. 6. 8 glSelectBuffer
14. 6. 9 gluPickMatrix
第15章 用OpenGL制作图像
15. 1 本章主要内容
15. 2 OpenGL图像扩展的基本知识
15. 3 颜色矩阵
15. 4 卷绕(过滤)
15. 4. 1 锐化卷绕滤镜
15. 4. 2 使卷绕滤镜变模糊
15. 5 直方图均衡
15. 5. 1 获取直方因数据
15. 5. 2 获取最小数据和最大数据
15. 6 小结
15. 7 参考函数
15. 7. 1 g1Convo1utionFilterlDARB
15. 7. 2 g1ConvolutionFi1ter2DARB
15. 7. 3 g1GetHistogramARB
15. 7. 4 g1GetMinMaxARB
15. 7. 5 g1HistogramARB
15. 7. 6 glMinMaxARB
15. 7. 7 g1ResetHistogramARB
15. 7. 8 glResetMinMaxARB
第16章 常用的OpenGL扩展
16. 1 本章主要内容
16. 2 可用的扩展
16. 3 何时使用扩展
16. 4 检查扩展的可用性
16. 4. 1 访问扩展函数
16. 4. 2 扩展常量
16. 5 交换线索扩展
16. 6 顶点淘汰扩展
16. 6. 1 使用顶点淘汰扩展
16. 6. 2 Terrain示例中的顶点淘汰
16. 7 多纹理扩展
16. 7. 1 检查多纹理扩展
16. 7. 2 使用多纹理扩展
16. 8 小结
16. 9 参考函数
16. 9. 1 glActiveTextureARB
16. 9. 2 glAddSwapHintRectWIN
16. 9. 3 g1CullParameterfvSGI
16. 9. 4 glMUltiTexCoord*ARB
16. 9. 5 wglGetProcAddress
第三部分 0penGL for Windows: OpenGL与Win32
第17章 OpenGL, 像素格式和渲染场境
17. 1 本章主要内容
17. 2 OpenGL在Windows上的实现
17. 2. 1 通用OpenGL
17. 2. 2 可安装的客户驱动程序
17. 2. 3 小型客户驱动程序
17. 2. 4 小型驱动程序
17. 3 基本Windows渲染
17. 3. 1 GDI设备场境
17. 3. 2 像素格式
17. 3. 3 OpenGL渲染场境
17. 4 综合应用
17. 4. 1 创建窗口
17. 4. 2 使用OpenGL渲染场境
17. 4. 3 其他Windows消息
17. 5 Windows调色板
17. 5. 1 颜色匹配
17. 5. 2 调色板调停
17. 5. 3 为OpenGL创建调色板
17. 5. 4 调色板的创建与处理
17. 6 0penGL和Windows字体
17. 6. 1 3D字体和文本
17. 6. 2 2D字体和文本
17. 7 全屏幕渲染
17. 7. 1 创建无框窗口
17. 7. 2 创建全屏窗口
17. 8 多线程渲染
17. 9 小结
17. 10 参考函数
17. 10. 1 ChoosePixelFormat
17. 10. 2 DescribePixelFormat
17. 10. 3 GetPixelFormat
17. 10. 4 SetPixelFormat
17. 10. 5 SwapBuffers
17. 10. 6 wglCreateContext
17. 10. 7 wglCreateLayerContext
17. 10. 8 wglCopyContext
17. 10. 9 wgmeleteContext
17. 10. 10 wgDescnbeLayerPlane
17. 10. 11 wglGetCurrentContext
17. 10. 12 wglGetCunenDC
17. 10. 13 wglMakeCurrent
17. 10. 14 wglShareLists
17. 10. 15 wglSwapLayerBuffers
17. 10. 16 wglUseFontBitmaps
17. 10. 17 WglUSeFontOutlines
第18章 非视窗渲染
18. 1 脱屏渲染的基本知识
18. 1. 1 脱屏渲染的制约
18. 1. 2 为渲染创建脱屏缓冲区
18. 1. 3 撤消脱屏缓冲区
18. 1. 4 共享显示表
18. 2 保存为. BMP文件
18. 3 打印图像
18. 4 图元文件
18. 4. 1 创建增强的图元文件设备场境
18. 4. 2 图元文件和OpenGL视见区
18. 4. 3 从Tenain查看程序中生成图元文件
18. 5 小结
第19章 OpenGL实时编程
19. 1 本章主要内容
19. 2 实时的速度
19. 3 Windows动画技巧
19. 3. 1 计时器用于动画
19. 3. 2 简化WM_PAINT机制
19. 3. 3 事件插入循环
19. 3. 4 使用渲染线程
19. 4 实时中的“真实”
19. 4. 1 基于时间的关键帧
19. 4. 2 实际限制
19. 4. 3 实时响应
19. 5 场景图基本知识
19. 5. 1 使景色散乱
19. 5. 2 模型淘汰
19. 6 其他实时技巧
19. 6. 1 Direct X
19. 6. 2 通用的OpenGL性能提示
19. 7 小结
第四部分 附录
附录A OpenGL更新摘要
A. 1 1. 1版(1995年12月)
A. 2 1. 2版(1998年3月)
附录B 阅读资料
B. 1 Windows编程方面的书籍
B. 2 OpenGL方面的书籍
B. 3 3D图形方面的书籍
B. 4 Web站点
附录C 0penGL状态机
C. 1 OpenGL的基本状态函数
C. 2 保存和恢复状态
C. 2. 1 绘制状态
C. 2. 2 深度缓冲区状态
C. 2. 3 模版缓冲区状态
C. 2. 4 亮度状态
C. 2. 5 纹理状态
C. 2. 6 像素状态
C. 3 参考函数
C. 3. 1 glDisable. g1Enab1e
C. 3. 2 glIsEnabled
C. 3. 3 g1PopAttrib
C. 3. 4 g1PushAttrib
附录D 词汇表