当前位置:主页 > 计算机电子书 > 图形处理 > OpenGL下载
OpenGL编程指南(第4版)

OpenGL编程指南(第4版) PDF 超清版

  • 更新:2022-04-19
  • 大小:29.92MB
  • 类别:OpenGL
  • 作者:OpenGL体系结构审核委员会
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

内容简介

OpenGL图形系统是一个软件接口,让程序员能够创建交互式程序,使用计算机图形学技术生成具有真实感的图像。本书是OpenGLARB推荐的OpenGL1.4版学习指南。

本书首先阐述OpenGL的功能和计算机图形学基本知识,包括状态管理和几何体的绘制、模型变换、视点变换和投影变换、颜色和光照;然后深入探讨一些高级技术,包括反走样、混合、雾效、显示列表、图像处理、纹理映射、帧缓存、网格化、NURBS、选择和反馈等;同时讨论其他一些重要主题,像如何提高程序的性能、OpenGL扩展和跨平台技术等。

本书只要求读者有一定的C语言基础和数学知识,适合所有对OpenGL编程感兴趣的读者阅读。

目录

  • 第1章OpenGL简介1
  • 1.1OpenGL概览2
  • 1.2一个简单的OpenGL程序4
  • 1.3OpenGL函数的语法5
  • 1.4OpenGL是一个状态机6
  • 1.5OpenGL渲染流水线6
  • 1.5.1显示列表7
  • 1.5.2求值程序7
  • 1.5.3顶点操作8
  • 1.5.4图元装配8
  • 1.5.5像素操作8
  • 1.5.6纹理装配8
  • 1.5.7光栅化9
  • 1.5.8片元操作9
  • 1.6与OpenGL相关的函数库9
  • 1.6.1包含文件10
  • 1.6.2OpenGL实用工具包(GLUT)11
  • 1.7动画13
  • 1.7.1暂停刷新14
  • 1.7.2运动就是重画加交换15
  • 第2章状态管理和绘制几何体19
  • 2.1绘图补救工具箱21
  • 2.1.1清空窗口21
  • 2.1.2指定颜色22
  • 2.1.3强制完成绘图操作23
  • 2.1.4坐标系统修补工具箱24
  • 2.2描述点、直线和多边形25
  • 2.2.1什么是点、直线和多边形26
  • 2.2.2指定顶点28
  • 2.2.3OpenGL几何绘图图元29
  • 2.3基本状态管理33
  • 2.4显示点、直线和多边形34
  • 2.4.1点的细节35
  • 2.4.2直线的细节35
  • 2.4.3多边形的细节38
  • 2.5法线向量44
  • 2.6顶点数组45
  • 2.6.1第1步:启用数组46
  • 2.6.2第2步:指定数组中的数据47
  • 2.6.3第3步:解除引用和渲染49
  • 2.6.4混合数组54
  • 2.7属性组56
  • 2.8有关使用多边形构造曲面的建议59
  • 第3章观察65
  • 3.1概述:相机类比67
  • 3.1.1一个简单的例子:绘制立方体69
  • 3.1.2通用的变换函数72
  • 3.2视点变换和模型变换73
  • 3.2.1如何看待变换74
  • 3.2.2模型变换75
  • 3.2.3视点变换79
  • 3.3投影变换84
  • 3.3.1透视投影84
  • 3.3.2正交投影86
  • 3.3.3根据视景体进行裁剪87
  • 3.4视口变换87
  • 3.4.1定义视口88
  • 3.4.2变换后的深度坐标89
  • 3.5变换的诊断90
  • 3.6操纵矩阵堆栈91
  • 3.6.1模型视点矩阵堆栈94
  • 3.6.2投影矩阵堆栈94
  • 3.7附加裁剪面94
  • 3.8组合变换举例97
  • 3.8.1建立太阳系模型97
  • 3.8.2建立带关节的机器人手臂模型99
  • 3.9逆变换和模拟变换102
  • 第4章颜色105
  • 4.1颜色感知106
  • 4.2计算机颜色107
  • 4.3RGBA模式与颜色索引模式109
  • 4.3.1RGBA显示模式109
  • 4.3.2颜色索引显示模式111
  • 4.3.3在RGBA模式和颜色索引模式之间做出选择112
  • 4.3.4在显示模式之间切换113
  • 4.4指定颜色和着色模式113
  • 4.4.1在RGBA模式下指定颜色113
  • 4.4.2在颜色索引模式下指定颜色114
  • 4.4.3指定着色模式115
  • 第5章光照119
  • 5.1隐藏面消除修补工具箱121
  • 5.2现实世界和OpenGL中的光照122
  • 5.2.1环境光、散射光、镜面反射光和发射光122
  • 5.2.2材质的颜色123
  • 5.2.3光线和材质的RGB值123
  • 5.3一个简单的例子:光照球体的渲染124
  • 5.4创建光源126
  • 5.4.1颜色128
  • 5.4.2位置和衰减128
  • 5.4.3聚光灯129
  • 5.4.4多光源130
  • 5.4.5控制光源的位置和方向131
  • 5.5选择光照模型135
  • 5.5.1全局环境光136
  • 5.5.2近视点还是无穷远视点136
  • 5.5.3双面光照136
  • 5.5.4辅助镜面反射颜色137
  • 5.5.5启用光照137
  • 5.6指定材质属性137
  • 5.6.1散射光反射和环境光反射138
  • 5.6.2镜面光反射139
  • 5.6.3发射光颜色139
  • 5.6.4改变材质属性140
  • 5.6.5颜色材质模式141
  • 5.7光照的数学计算144
  • 5.7.1材质的发射光144
  • 5.7.2反射的全局环境光144
  • 5.7.3光源的贡献144
  • 5.7.4叠加146
  • 5.7.5辅助镜面发射光颜色146
  • 5.8颜色索引模式下的光照147
  • 第6章混合、反走样、雾效和多边形偏移149
  • 6.1混合150
  • 6.1.1源因子和目标因子151
  • 6.1.2启用混合操作152
  • 6.1.3使用混合方程来合并像素153
  • 6.1.4混合的用途154
  • 6.1.5一个混合的例子156
  • 6.1.6使用深度缓存的三维混合158
  • 6.2反走样161
  • 6.2.1点和值线的反走样162
  • 6.2.2使用多重采样对几何图元进行反走样处理167
  • 6.2.3多边形的反走样170
  • 6.3雾170
  • 6.3.1使用雾171
  • 6.3.2雾方程173
  • 6.4点参数178
  • 6.5多边形偏移180
  • 第7章显示列表183
  • 7.1为何使用显示列表184
  • 7.2一个使用显示列表的例子184
  • 7.3显示列表设计准则187
  • 7.4创建和执行显示列表188
  • 7.4.1命名和创建显示列表189
  • 7.4.2显示列表存储的内容190
  • 7.4.3执行显示列表191
  • 7.4.4多级显示列表192
  • 7.4.5管理显示列表索引193
  • 7.5执行多个显示列表193
  • 7.6使用显示列表来管理状态变量197
  • 第8章绘制像素、位图、字体和图像201
  • 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像素的封装和拆封217
  • 8.3.2控制像素存储模式218
  • 8.3.3像素转移操作221
  • 8.3.4像素映射223
  • 8.3.5缩放和翻转图像224
  • 8.4读取和绘制矩形像素阵列226
  • 8.5提高像素绘制速度的技巧229
  • 8.6图像处理子集229
  • 8.6.1颜色表230
  • 8.6.2卷积234
  • 8.6.3颜色矩阵240
  • 8.6.4收集统计数据(histogram)241
  • 8.6.5Minmax243
  • 第9章纹理映射245
  • 9.1概述和范例248
  • 9.1.1纹理映射的步骤248
  • 9.1.2一个简单的程序250
  • 9.2指定纹理252
  • 9.2.1纹理代理255
  • 9.2.2替换纹理图像的部分或全部纹素256
  • 9.2.3一维纹理258
  • 9.2.4三维纹理259
  • 9.2.5压缩的纹理图像263
  • 9.2.6使用纹理边框265
  • 9.2.7mipmap:多个明细等级265
  • 9.3滤波273
  • 9.4纹理对象275
  • 9.4.1生成纹理对象名称275
  • 9.4.2创建和使用纹理对象275
  • 9.4.3删除纹理对象278
  • 9.4.4驻留纹理工作集278
  • 9.4.5纹理函数280
  • 9.5指定纹理坐标282
  • 9.5.1计算合适的纹理坐标283
  • 9.5.2纹理的重复和截取284
  • 9.6自动生成纹理坐标287
  • 9.6.1创建等高线288
  • 9.6.2球面图(spheremap)291
  • 9.6.3立方图纹理(cubemaptexture)292
  • 9.7多重纹理294
  • 9.8纹理组合函数298
  • 9.9执行纹理映射后应用辅助颜色302
  • 9.9.1光照被禁用时的辅助颜色302
  • 9.9.2光照被启用时的辅助镜面反射颜色302
  • 9.10纹理矩阵堆栈303
  • 9.11深度纹理303
  • 9.11.1创建阴影图304
  • 9.11.2生成纹理坐标并渲染场景305
  • 第10章帧缓存307
  • 10.1缓存及其用途309
  • 10.1.1颜色缓存310
  • 10.1.2深度缓存310
  • 10.1.3模板缓存310
  • 10.1.4累积缓存310
  • 10.1.5清空缓存311
  • 10.1.6指定要读写的颜色缓存311
  • 10.1.7屏蔽缓存313
  • 10.2片元的测试和操作314
  • 10.2.1截剪测试314
  • 10.2.2Alpha测试315
  • 10.2.3模板测试316
  • 10.2.4深度测试320
  • 10.2.5混合、抖动和逻辑运算320
  • 10.3累积缓存322
  • 10.3.1场景反走样323
  • 10.3.2运动模糊327
  • 10.3.3景深327
  • 10.3.4柔和阴影330
  • 10.3.5抖动330
  • 第11章网格化和二次曲面333
  • 11.1多边形网格化334
  • 11.1.1创建网格化对象335
  • 11.1.2网格化回调函数335
  • 11.1.3网格化属性339
  • 11.1.4定义多边形343
  • 11.1.5删除网格化对象345
  • 11.1.6提高网格化性能的技巧345
  • 11.1.7描述GLU错误345
  • 11.1.8向后兼容性345
  • 11.2二次曲面:渲染球体、圆柱体和圆盘346
  • 11.2.1管理二次对象347
  • 11.2.2设置二次对象的属性347
  • 11.2.3二次图元348
  • 第12章求值程序和NURBS353
  • 12.1预备知识354
  • 12.2求值程序355
  • 12.2.1一维求值程序355
  • 12.2.2二维求值程序358
  • 12.2.3使用求值程序来生成纹理坐标362
  • 12.3GLUNURBS接口364
  • 12.3.1一个简单的NURBS范例364
  • 12.3.2管理NURBS对象367
  • 12.3.3创建NURBS曲线或曲面370
  • 12.3.4修剪NURBS曲面374
  • 第13章选择和反馈377
  • 13.1选择378
  • 13.1.1基本步骤378
  • 13.1.2创建名称堆栈379
  • 13.1.3命中记录380
  • 13.1.4选择示例381
  • 13.1.5拾取383
  • 13.1.6有关编写使用选择机制的程序的建议390
  • 13.2反馈392
  • 13.2.1反馈数组393
  • 13.2.2在反馈模式下使用标记394
  • 13.2.3反馈示例394
  • 第14章OpenGL高级技巧399
  • 14.1错误处理400
  • 14.2查询OpenGL版本402
  • 14.2.1实用库版本403
  • 14.2.2窗口系统扩展版本403
  • 14.3对标准的扩展403
  • 14.4轻松制作透明物体405
  • 14.5轻松实现淡出效果405
  • 14.6使用后缓存来处理选择406
  • 14.7开销不高的图像变换方法407
  • 14.8显示多层408
  • 14.9字符反走样409
  • 14.10绘制圆形点410
  • 14.11图像插值410
  • 14.12制作贴花411
  • 14.13使用模板缓存绘制填充凹多边形412
  • 14.14找出冲突区域413
  • 14.15阴影414
  • 14.16隐藏线消除415
  • 14.16.1使用多边形偏移隐藏线消除415
  • 14.16.2使用模板缓存消除隐藏线415
  • 14.17纹理映射的用途416
  • 14.18绘制深度缓存图像416
  • 14.19狄利克雷域417
  • 14.20生存游戏418
  • 14.21glDrawPixels()和glCopyPixels()的其他用途419
  • 附录A操作顺序421
  • A.1概述422
  • A.2几何操作422
  • A.2.1顶点操作423
  • A.2.2图元装配423
  • A.3像素操作423
  • A.4片元操作424
  • A.5其他操作424
  • 附录B状态变量425
  • B.1查询函数426
  • B.2OpenGL状态变量427
  • 附录COpenGL和窗口系统445
  • C.1访问新的OpenGL函数446
  • C.2X窗口系统的OpenGL扩展(GLX)446
  • C.2.1初始化447
  • C.2.2控制渲染448
  • C.2.3GLX库函数的原型449
  • C.3AppleMacintosh的OpenGL扩展(AGL)451
  • C.3.1初始化451
  • C.3.2渲染和场境451
  • C.3.3管理OpenGL渲染场境452
  • C.3.4在屏幕上渲染452
  • C.3.5离屏渲染452
  • C.3.6全屏渲染452
  • C.3.7交换缓存452
  • C.3.8更新渲染缓存452
  • C.3.9使用AppleMacintosh字体453
  • C.3.10错误处理453
  • C.3.11AGL库函数的原型453
  • C.4IBMOS/2Warp的OpenGL扩展(PGL)454
  • C.4.1初始化454
  • C.4.2控制渲染455
  • C.4.3PGL函数的原型456
  • C.5MicrosoftWindows的OpenGL扩展(WGL)456
  • C.5.1初始化457
  • C.5.2控制渲染457
  • C.5.3WGL函数的原型458
  • 附录DOpenGL实用工具包(GLUT)基础461
  • D.1初始化和创建窗口462
  • D.2处理窗口事件和输入事件463
  • D.3加载颜色表464
  • D.4初始化和绘制三维物体464
  • D.5管理后台处理465
  • D.6运行程序465
  • 附录E计算法线向量467
  • E.1计算解析曲面的法线468
  • E.2根据多边形数据计算法线469
  • 附录F齐次坐标和变换矩阵471
  • F.1齐次坐标472
  • F.1.1变换顶点472
  • F.1.2法线变换472
  • F.2变换矩阵473
  • F.2.1平移473
  • F.2.2缩放473
  • F.2.3旋转473
  • F.2.4透视投影474
  • F.2.5正交投影475
  • 附录G编程建议477
  • G.1OpenGL正确编程技巧478
  • G.2提高OpenGL性能的建议479
  • G.3GLX建议480
  • 附录HOpenGL的不变性481
  • 术语表483

资源下载

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

网友留言