当前位置:主页 > 书籍配套资源 > OpenGL编程配套资源
《OpenGL编程指南(原书第7版)》附录

《OpenGL编程指南(原书第7版)》附录

  • 更新:2022-09-07
  • 大小:5.6 MB
  • 类别:OpenGL编程
  • 作者:Dave、Shreiner;
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉。本书的上一个版本覆盖了到OpenGL 2.1版的内容。本版涵盖了OpenGL 3.0和3.1的最新特性。本书以清晰的语言描述了OpenGL的功能以及许多基本的计算机图形技巧,例如创建和渲染3D模型、从不同的透视角度观察物体、使用着色、光照和纹理贴图使场景更加逼真等。另外,本书还深入探讨了许多高级技巧,包括纹理贴图、抗锯齿、雾和大气效果、NURBS、图像处理子集等。此外,本书还对一些重要的主题进行了讨论,例如提高性能、OpenGL扩展以及跨平台技术等。

OpenGL是图形硬件的一种软件接口。从本质上说,它是一个3D图形和模型库,具有高度的可移植性,并且具有非常快的渲染速度。如今,OpenGL广泛应用于游戏、医学影像、地理信息、气象模拟等领域,是高性能图形和交互性场景处理的行业标准。

OpenGL的前身是SGI公司开发的IRIS GL图形函数库。SGI是一家久负盛名的公司,在计算机图形和动画领域处于业界领先地位。IRIS GL最初是一个2D图形函数库,后来逐渐演化为SGI的高端IRIS图形工作站所使用的3D编程API。后来,由于图形技术的发展,SGI对IRIS GL的移植性进行了改进和提高,使它逐步发展成如今的OpenGL。在此期间,OpenGL得到了各大厂商的支持,从而成为一种广泛流行的三维图形标准。

OpenGL并不是一种编程语言,而更像是一个C运行时函数库。它提供了一些预包装的功能,帮助开发人员编写功能强大的三维图形应用程序。OpenGL可以在多种操作系统平台上运行,例如各种版本的Windows、UNIX/Linux、Mac OS和OS/2等。

OpenGL是一个开放的标准,虽然它由SGI首创,但是它的标准并不控制在SGI的手中,而是由OpenGL体系结构审核委员会(ARB)掌管。ARB由SGC、DEC、IBM、Intel和Microsoft等著名公司于1992年创立,后来又陆续添加了nVidia、ATI等图形芯片领域的巨擎。ARB每隔4年举行一次会议,对OpenGL规范进行维护和改善,并出台计划对OpenGL标准进行升级,使OpenGL一直保持与时代同步。

2006年,SGI公司把OpenGL标准的控制从ARB移交给一个新的工作组—Khronos小组(www.khronos.org)。Khronos是一个由成员提供资金的行业协会,专注于开放媒体标准的创建和维护。目前,Khronos负责OpenGL的发展和升级。

《OpenGL编程指南》就是由Khronos小组编写的官方指南,是OpenGL领域的权威著作,有“OpenGL红宝书”之称,曾经帮助许多程序员走上了OpenGL专家之路。第7版在第6版的基础上又有所改进,介绍了OpenGL 3.0和OpenGL 3.1的新的和更新的内容。

本书历经多次版本升级,其中文版的翻译也是一项延续性的工作,凝结了许多人的辛勤工作。徐波等曾承担《OpenGL编程指南》第5版和第6版的主要翻译工作。李军在第6版的中文版的基础上,负责了第7版新增内容的翻译和更新工作。参与第7版翻译工作的还有刘金华、刘伟超、罗庚臣、刘二然、郑芳菲、庄逸川、王世高、郭莹、陈、邓勇、何进伟、贾晓斌、汪蔚和齐国涛。机械工业出版社华章分社的编辑为本书的出版付出了辛勤劳动,感谢他们!

封面图

目录

  • 译者序
  • 前言
  • 第1章OpenGL简介1
  • 1.1什么是OpenGL1
  • 1.2一段简单的OpenGL代码3
  • 1.3OpenGL函数的语法4
  • 1.4OpenGL是一个状态机6
  • 1.5OpenGL渲染管线6
  • 1.5.1显示列表7
  • 1.5.2求值器7
  • 1.5.3基于顶点的操作7
  • 1.5.4图元装配7
  • 1.5.5像素操作8
  • 1.5.6纹理装配8
  • 1.5.7光栅化8
  • 1.5.8片断操作8
  • 1.6与OpenGL相关的函数库9
  • 1.6.1包含文件9
  • 1.6.2OpenGL实用工具库(GLUT)10
  • 1.7动画13
  • 1.7.1暂停刷新14
  • 1.7.2动画=重绘+交换15
  • 1.8OpenGL及其废弃机制17
  • 1.8.1OpenGL渲染环境17
  • 1.8.2访问OpenGL函数18
  • 第2章状态管理和绘制几何物体19
  • 2.1绘图工具箱20
  • 2.1.1清除窗口20
  • 2.1.2指定颜色22
  • 2.1.3强制完成绘图操作23
  • 2.1.4坐标系统工具箱24
  • 2.2描述点、直线和多边形25
  • 2.2.1什么是点、直线和多边形25
  • 2.2.2指定顶点27
  • 2.2.3OpenGL几何图元27
  • 2.3基本状态管理31
  • 2.4显示点、直线和多边形32
  • 2.4.1点的细节32
  • 2.4.2直线的细节33
  • 2.4.3多边形的细节36
  • 2.5法线向量41
  • 2.6顶点数组43
  • 2.6.1步骤1:启用数组44
  • 2.6.2步骤2:指定数组的数据44
  • 2.6.3步骤3:解引用和渲染46
  • 2.6.4重启图元51
  • 2.6.5实例化绘制53
  • 2.6.6混合数组54
  • 2.7缓冲区对象57
  • 2.7.1创建缓冲区对象57
  • 2.7.2激活缓冲区对象58
  • 2.7.3用数据分配和初始化缓冲区对象58
  • 2.7.4更新缓冲区对象的数据值60
  • 2.7.5在缓冲区对象之间复制数据62
  • 2.7.6清除缓冲区对象63
  • 2.7.7使用缓冲区对象存储顶点数组数据63
  • 2.8顶点数组对象65
  • 2.9属性组69
  • 2.10创建多边形表面模型的一些提示71
  • 第3章视图77
  • 3.1简介:用照相机打比方78
  • 3.1.1一个简单的例子:绘制立方体80
  • 3.1.2通用的变换函数83
  • 3.2视图和模型变换84
  • 3.2.1对变换进行思考85
  • 3.2.2模型变换86
  • 3.2.3视图变换89
  • 3.3投影变换93
  • 3.3.1透视投影94
  • 3.3.2正投影95
  • 3.3.3视景体裁剪96
  • 3.4视口变换96
  • 3.4.1定义视口96
  • 3.4.2变换深度坐标97
  • 3.5和变换相关的故障排除98
  • 3.6操纵矩阵堆栈100
  • 3.6.1模型视图矩阵堆栈101
  • 3.6.2投影矩阵堆栈102
  • 3.7其他裁剪平面102
  • 3.8一些组合变换的例子104
  • 3.8.1创建太阳系模型104
  • 3.8.2创建机器人手臂107
  • 3.9逆变换和模拟变换109
  • 第4章颜色113
  • 4.1颜色感知113
  • 4.2计算机颜色114
  • 4.3RGBA和颜色索引模式115
  • 4.3.1RGBA显示模式116
  • 4.3.2颜色索引模式117
  • 4.3.3在RGBA和颜色索引模式中进行选择118
  • 4.3.4切换显示模式118
  • 4.4指定颜色和着色模型119
  • 4.4.1在RGBA模式下指定颜色119
  • 4.4.2在颜色索引模式下指定颜色120
  • 4.4.3指定着色模型121
  • 第5章光照123
  • 5.1隐藏表面消除工具箱124
  • 5.2现实世界和OpenGL光照125
  • 5.2.1环境光、散射光、镜面光和发射光125
  • 5.2.2材料颜色126
  • 5.2.3光和材料的RGB值126
  • 5.3一个简单的例子:渲染光照球体127
  • 5.4创建光源129
  • 5.4.1颜色130
  • 5.4.2位置和衰减131
  • 5.4.3聚光灯132
  • 5.4.4多光源133
  • 5.4.5控制光源的位置和方向133
  • 5.5选择光照模型138
  • 5.5.1全局环境光138
  • 5.5.2局部的观察点或无限远的观察点138
  • 5.5.3双面光照139
  • 5.5.4镜面辅助颜色139
  • 5.5.5启用光照140
  • 5.6定义材料属性140
  • 5.6.1散射和环境反射141
  • 5.6.2镜面反射141
  • 5.6.3发射光颜色142
  • 5.6.4更改材料属性142
  • 5.6.5颜色材料模式143
  • 5.7和光照有关的数学知识146
  • 5.7.1材料的发射光147
  • 5.7.2经过缩放的全局环境光147
  • 5.7.3光源的贡献147
  • 5.7.4完整的光照计算公式148
  • 5.7.5镜面辅助颜色148
  • 5.8颜色索引模式下的光照149
  • 第6章混合、抗锯齿、雾和多边形偏移151
  • 6.1混合152
  • 6.1.1源因子和目标因子152
  • 6.1.2启用混合154
  • 6.1.3使用混合方程式组合像素154
  • 6.1.4混合的样例用法156
  • 6.1.5一个混合的例子157
  • 6.1.6使用深度缓冲区进行三维混合159
  • 6.2抗锯齿162
  • 6.2.1对点和直线进行抗锯齿处理164
  • 6.2.2使用多重采样对几何图元进行抗锯齿处理169
  • 6.2.3对多边形进行抗锯齿处理172
  • 6.3雾172
  • 6.3.1使用雾173
  • 6.3.2雾方程式175
  • 6.4点参数181
  • 6.5多边形偏移182
  • 第7章显示列表185
  • 7.1为什么使用显示列表185
  • 7.2一个使用显示列表的例子186
  • 7.3显示列表的设计哲学188
  • 7.4创建和执行显示列表189
  • 7.4.1命名和创建显示列表191
  • 7.4.2存储在显示列表里的是什么191
  • 7.4.3执行显示列表193
  • 7.4.4层次式显示列表193
  • 7.4.5管理显示列表索引194
  • 7.5执行多个显示列表194
  • 7.6用显示列表管理状态变量199
  • 第8章绘制像素、位图、字体和图像202
  • 8.1位图和字体203
  • 8.1.1当前光栅位置204
  • 8.1.2绘制位图205
  • 8.1.3选择位图的颜色206
  • 8.1.4字体和显示列表206
  • 8.1.5定义和使用一种完整的字体207
  • 8.2图像209
  • 8.3图像管线215
  • 8.3.1像素包装和解包216
  • 8.3.2控制像素存储模式217
  • 8.3.3像素传输操作219
  • 8.3.4像素映射221
  • 8.3.5放大、缩小或翻转图像222
  • 8.4读取和绘制像素矩形224
  • 8.5使用缓冲区对象存取像素矩形数据227
  • 8.5.1使用缓冲区对象传输像素数据227
  • 8.5.2使用缓冲区对象提取像素数据228
  • 8.6提高像素绘图速度的技巧229
  • 8.7图像处理子集230
  • 8.7.1颜色表231
  • 8.7.2卷积234
  • 8.7.3颜色矩阵240
  • 8.7.4柱状图241
  • 8.7.5最小最大值243
  • 第9章纹理贴图245
  • 9.1概述和示例248
  • 9.1.1纹理贴图的步骤248
  • 9.1.2一个示例程序249
  • 9.2指定纹理251
  • 9.2.1纹理代理255
  • 9.2.2替换纹理图像的全部或一部分257
  • 9.2.3一维纹理259
  • 9.2.4三维纹理261
  • 9.2.5纹理数组264
  • 9.2.6压缩纹理图像265
  • 9.2.7使用纹理边框267
  • 9.2.8mipmap:多重细节层267
  • 9.3过滤275
  • 9.4纹理对象277
  • 9.4.1命名纹理对象277
  • 9.4.2创建和使用纹理对象278
  • 9.4.3清除纹理对象280
  • 9.4.4常驻纹理工作集280
  • 9.5纹理函数282
  • 9.6分配纹理坐标284
  • 9.6.1计算正确的纹理坐标285
  • 9.6.2重复和截取纹理286
  • 9.7纹理坐标自动生成289
  • 9.7.1创建轮廓线289
  • 9.7.2球体纹理293
  • 9.7.3立方图纹理294
  • 9.8多重纹理296
  • 9.9纹理组合器函数299
  • 9.10在纹理之后应用辅助颜色303
  • 9.10.1在禁用光照时使用辅助颜色303
  • 9.10.2启用光照后的辅助镜面颜色303
  • 9.11点块纹理303
  • 9.12纹理矩阵堆栈304
  • 9.13深度纹理305
  • 9.13.1创建阴影图306
  • 9.13.2生成纹理坐标并进行渲染307
  • 第10章帧缓冲区309
  • 10.1缓冲区及其用途310
  • 10.1.1颜色缓冲区311
  • 10.1.2清除缓冲区312
  • 10.1.3选择用于读取和写入的颜色缓冲区313
  • 10.1.4缓冲区的屏蔽315
  • 10.2片断测试和操作316
  • 10.2.1裁剪测试316
  • 10.2.2alpha测试317
  • 10.2.3模板测试318
  • 10.2.4深度测试322
  • 10.2.5遮挡查询322
  • 10.2.6条件渲染324
  • 10.2.7混合、抖动和逻辑操作325
  • 10.3累积缓冲区327
  • 10.3.1运动模糊328
  • 10.3.2景深328
  • 10.3.3柔和阴影331
  • 10.3.4微移331
  • 10.4帧缓冲区对象332
  • 10.4.1渲染缓冲区333
  • 10.4.2复制像素矩形340
  • 第11章分格化和二次方程表面342
  • 11.1多边形分格化342
  • 11.1.1创建分格化对象343
  • 11.1.2分格化回调函数343
  • 11.1.3分格化属性347
  • 11.1.4多边形定义350
  • 11.1.5删除分格化对象352
  • 11.1.6提高分格化性能的建议352
  • 11.1.7描述GLU错误352
  • 11.1.8向后兼容性352
  • 11.2二次方程表面:渲染球体、圆柱体和圆盘353
  • 11.2.1管理二次方程对象354
  • 11.2.2控制二次方程对象的属性354
  • 11.2.3二次方程图元355
  • 第12章求值器和NURBS360
  • 12.1前提条件360
  • 12.2求值器361
  • 12.2.1一维求值器361
  • 12.2.2二维求值器365
  • 12.2.3使用求值器进行纹理处理369
  • 12.3GLU的NURBS接口371
  • 12.3.1一个简单的NURBS例子371
  • 12.3.2管理NURBS对象374
  • 12.3.3创建NURBS曲线或表面377
  • 12.3.4修剪NURBS表面380
  • 第13章选择和反馈383
  • 13.1选择383
  • 13.1.1基本步骤384
  • 13.1.2创建名字栈384
  • 13.1.3点击记录385
  • 13.1.4一个选择例子386
  • 13.1.5挑选389
  • 13.1.6编写使用选择的程序的一些建议397
  • 13.2反馈398
  • 13.2.1反馈数组399
  • 13.2.2在反馈模式下使用标记400
  • 13.2.3一个反馈例子400
  • 第14章OpenGL高级技巧404
  • 14.1错误处理405
  • 14.2OpenGL版本406
  • 14.2.1工具函数库版本407
  • 14.2.2窗口系统扩展版本407
  • 14.3标准的扩展407
  • 14.4实现半透明效果409
  • 14.5轻松实现淡出效果409
  • 14.6使用后缓冲区进行物体选择411
  • 14.7低开销的图像转换411
  • 14.8显示层次412
  • 14.9抗锯齿字符413
  • 14.10绘制圆点414
  • 14.11图像插值414
  • 14.12制作贴花415
  • 14.13使用模板缓冲区绘制填充的凹多边形416
  • 14.14寻找冲突区域416
  • 14.15阴影417
  • 14.16隐藏直线消除418
  • 14.16.1使用多边形偏移实现隐藏直线消除418
  • 14.16.2使用模板缓冲区实现隐藏直线消除419
  • 14.17纹理贴图的应用419
  • 14.18绘制深度缓冲的图像420
  • 14.19Dirichlet域420
  • 14.20使用模板缓冲区实现生存游戏421
  • 14.21glDrawPixels()和glCopyPixels()的其他应用422
  • 第15章OpenGL着色语言424
  • 15.1OpenGL图形管线和可编程着色器424
  • 15.1.1顶点处理425
  • 15.1.2片断处理426
  • 15.2使用GLSL着色器427
  • 15.2.1着色器示例427
  • 15.2.2OpenGL/GLSL接口428
  • 15.3OpenGL着色语言432
  • 15.4使用GLSL创建着色器433
  • 15.4.1程序起点433
  • 15.4.2声明变量433
  • 15.4.3聚合类型434
  • 15.5uniform块439
  • 15.5.1在着色器中指定uniform变量440
  • 15.5.2访问在uniform块中声明的uniform变量440
  • 15.5.3计算不变性446
  • 15.5.4语句446
  • 15.5.5函数448
  • 15.5.6在GLSL程序中使用OpenGL状态值449
  • 15.6在着色器中访问纹理图像449
  • 15.7着色器预处理器452
  • 15.7.1预处理器指令452
  • 15.7.2宏定义452
  • 15.7.3预处理器条件453
  • 15.7.4编译器控制453
  • 15.8扩展处理454
  • 15.9顶点着色器的细节454
  • 15.10变换反馈458
  • 15.11片断着色器462
  • 附录AGLUT(OpenGL实用工具库)基础知识464
  • 附录B状态变量468
  • 附录C齐次坐标和变换矩阵495
  • 附录DOpenGL和窗口系统499
  • 术语表511

资源下载

资源下载地址1:https://pan.baidu.com/s/1o1zXdDfHtT1OPezmtuR87w

相关资源

网友留言