猜你喜欢
OpenGL超级宝典(第7版)

OpenGL超级宝典(第7版)

书籍作者:[美] 格雷厄姆·塞勒斯 ISBN:9787115545701
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8647
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介
本书是OpenGL及3D图形编程的经典入门指南,涵盖了使用OpenGL进行编程所需要的主要知识。
本书内容分3部分。第一部分介绍经典OpenGL绘图的基础知识,涉及管线、数学知识、数据、着色器和程序等;第二部分着重介绍OpenGL的一些高级功能,涉及顶点处理与绘图命令、基元处理片段处理与帧缓冲、计算着色器、高级数据管理、管线监控等;第三部分介绍一些实战技巧,涉及渲染技巧、高性能的OpenGL、调试和稳定性等。
本书适合希望系统学习OpenGL的读者阅读,经验丰富的OpenGL程序员也能从中获益。本书既可以作为学习OpenGL的教材,也可以作为随时查阅的参考手册。
作者简介
格雷厄姆·塞勒斯(Graham Sellers)是AMD的软件架构师和工程研究员,是OpenGL ARB中的AMD代表。他为核心的OpenGL规范和扩展做出了贡献,并拥有多项图形和图像处理专利。
小理查德·赖特(Richard S. Wright, Jr.)是Software Bisque公司的高级软件工程师,他用OpenGL开发了多媒体宇航和天文软件。十多年来,他在美国福赛大学(Full Sail University)的游戏开发学位课程中教授OpenGL编程。
尼古拉斯·海梅尔(Nicholas Haemel)是英伟达公司相机软件部门的主管,曾代表英伟达参加KhronosGroup标准组织,并编写了许多OpenGL扩展。
编辑推荐
OpenGL是实时计算机图形领域领先的3D API。这是一本经典的OpenGL开发教程,全面介绍了OpenGL 4.5的API、关键扩展、着色器和其他基础知识,并基于实例讲解了OpenGL 4.5的各项功能。另外,本书在几种流行的平台上引入了OpenGL,并提供了多样化的实践技巧和详尽的指导。
作为经典图书的升级版,本书重点介绍了许多OpenGL 4.5的新功能,包括重要的ARB和KHR扩展,这些功能现已成为标准的一部分,并且遵循接近零驱动开销(Approach Zero Driver Overhead,AZDO)规则。书中针对主要的增强功能提供了丰富的示例程序。
目录
第 1章 OpenGL简介 2
1.1 OpenGL和图形管线 2
1.2 OpenGL的起源和演化 4
1.3 基元、管线和像素 6
1.4 总结 7
第 2章 我们的第 一个OpenGL程序 8
2.1 创建简单的应用 8
2.2 使用着色器 10
2.3 绘制我们的第 一个三角形 15
2.4 总结 16
第3章 管线 17
3.1 向顶点着色器传递数据 17
3.2 在阶段之间传递数据 19
3.3 细分曲面 21
3.3.1 细分曲面控制着色器 21
3.3.2 细分曲面引擎 23
3.3.3 细分曲面评估着色器 23
3.4 几何着色器 24
3.5 基元装配、裁剪和光栅化 25
3.5.1 裁剪 25
3.5.2 视口转换 26
3.5.3 剔除 27
3.5.4 光栅化 27
3.6 片段着色器 28
3.7 帧缓存运算 30
3.8 计算着色器 31
3.9 使用OpenGL扩展 32
3.10 总结 35
第4章 3D图形中的数学 36
4.1 本章是在讲令人生畏的数学课吗 36
4.2 3D图形数学速成课 37
4.2.1 向量 37
4.2.2 常见向量运算符 39
4.2.3 矩阵 41
4.2.4 矩阵构造和运算符 42
4.3 了解转换 44
4.3.1 OpenGL中的坐标空间 45
4.3.2 坐标转换 46
4.3.3 连接转换 52
4.3.4 四元数 52
4.3.5 模型—视图转换 53
4.3.6 投影转换 55
4.4 插值、直线、曲线和样条 58
4.4.1 曲线 58
4.4.2 样条 61
4.5 总结 63
第5章 数据 64
5.1 缓冲 64
5.1.1 创建缓冲和分配内存 65
5.1.2 填充以及拷贝数据到缓冲 69
5.1.3 使用缓冲为顶点着色器提供数据 71
5.2 统一变量 77
5.2.1 缺省区块统一变量 77
5.2.2 一致区块 79
5.2.3 使用统一变量转换几何图形 89
5.3 着色器存储区块 93
5.4 原子计数器 97
5.5 纹理 101
5.5.1 创建并初始化纹理 101
5.5.2 纹理目标和类型 102
5.5.3 从着色器中纹理读取数据 103
5.5.4 从文件载入纹理 106
5.5.5 控制纹理数据的读取方式 108
5.5.6 数组纹理 116
5.5.7 在着色器中向纹理写入数据 120
5.5.8 同步存取图像 128
5.5.9 纹理压缩 128
5.5.10 纹理视图 131
5.6 总结 133
第6章 着色器和程序 134
6.1 语言概述 134
6.1.1 数据类型 134
6.1.2 内置函数 139
6.2 编译、链接和检查程序 143
6.2.1 从编译程序获得信息 143
6.2.2 从链接程序获得信息 146
6.2.3 单独程序 147
6.2.4 着色器子程序 152
6.2.5 程序二进制 155
6.3 总结 157

第二部分 深入探索
第7章 顶点处理与绘图命令 160
7.1 顶点处理 160
7.1.1 顶点着色器输入 160
7.1.2 顶点着色器输出 164
7.2 绘图命令 165
7.2.1 索引绘图命令 165
7.2.2 实例化 170
7.2.3 间接绘制 178
7.3 变换顶点的保存 185
7.3.1 使用变换反馈 185
7.3.2 开始、暂停和停止变换反馈 189
7.3.3 用变换反馈结束管线 190
7.3.4 变换反馈示例:实物模拟 190
7.4 裁剪 196
7.5 总结 200
第8章 基元处理 201
8.1 曲面细分 201
8.1.1 曲面细分基元模式 202
8.1.2 曲面细分子分段模式 208
8.1.3 数据在曲面细分着色器之间的传递 209
8.1.4 着色器调用通信 211
8.1.5 曲面细分示例:地形渲染 211
8.1.6 曲面细分示例:三次贝塞尔面片 215
8.2 几何着色器 219
8.2.1 传递几何着色器 219
8.2.2 在应用程序中使用几何着色器 221
8.2.3 删除几何着色器中的几何 224
8.2.4 修改几何着色器中的几何体 226
8.2.5 在几何着色器中生成几何体 227
8.2.6 修改几何着色器中的基元类型 229
8.2.7 多条储存流 231
8.2.8 通过几何着色器引入新基元类型 232
8.2.9 多次视口转换 237
8.3 总结 239
第9章 片段处理与帧缓冲 240
9.1 片段着色器 240
9.2 单片段测试 243
9.2.1 剪裁测试 243
9.2.2 模板测试 245
9.2.3 深度测试 247
9.2.4 早期测试 250
9.3 颜色输出 251
9.3.1 混合 251
9.3.2 逻辑运算 254
9.3.3 颜色遮罩 255
9.4 离屏渲染 256
9.4.1 多个帧缓冲附件 260
9.4.2 分层渲染 261
9.4.3 帧缓存的完整性 266
9.4.4 立体渲染 268
9.5 反混叠 272
9.5.1 过滤法反混叠 272
9.5.2 多样本反混叠 274
9.5.3 多样本纹理 275
9.5.4 采样率着色 278
9.5.5 重心采样 280
9.6 高级帧缓冲格式 282
9.6.1 无附件渲染 283
9.6.2 浮点帧缓冲 284
9.6.3 整数帧缓冲 293
9.6.4 sRGB颜色空间 294
9.7 点精灵 296
9.7.1 点纹理化 296
9.7.2 渲染星空 297
9.7.3 点参数 299
9.7.4 有形点 299
9.7.5 旋转点 301
9.8 获取图像 302
9.8.1 从帧缓存中读取 302
9.8.2 在帧缓冲之间复制数据 304
9.8.3 读取纹理数据 307
9.9 总结 308
第 10章 计算着色器 309
10.1 使用计算着色器 309
10.1.1 执行计算着色器 310
10.1.2 计算着色器通信 314
10.2 示例 317
10.2.1 计算着色器并行前缀和 317
10.2.2 计算着色器群集 326
10.3 总结 333
第 11章 高级数据管理 334
11.1 取消绑定 334
11.2 稀疏纹理 338
11.3 纹理压缩 343
11.3.1 RGTC压缩方法 343
11.3.2 生成压缩数据 345
11.4 压缩数据格式 349
11.5 高质量纹理过滤 351
11.6 总结 353
第 12章 管线监控 354
12.1 查询 354
12.1.1 遮挡查询 355
12.1.2 定时查询 362
12.1.3 变换反馈查询 365
12.1.4 管线状态查询 369
12.2 OpenGL同步 370
12.2.1 清空管线 370
12.2.2 同步与栅栏 371
12.3 总结 374


第三部分 实战演练
第 13章 渲染技巧 376
13.1 光照模型 376
13.1.1 Phong光照模型 376
13.1.2 Blinn-Phong光照 382
13.1.3 边缘光 384
13.1.4 法线映射 386
13.1.5 环境映射 389
13.1.6 材料性质 396
13.1.7 投射阴影 398
13.1.8 雾化效果 401
13.2 非真实感绘制 404
13.3 替代渲染方法 407
13.3.1 延期着色 407
13.3.2 屏幕空间技术 414
13.3.3 无三角渲染 419
13.4 2D图像 429
13.4.1 距离场纹理 429
13.4.2 位图字体 433
13.5 总结 436
第 14章 高性能的OpenGL 437
14.1 优化CPU性能 437
14.1.1 OpenGL中的多线程 437
14.1.2 包缓存 441
14.2 OpenGL中的低开销操作 448
14.2.1 间接渲染 449
14.2.2 GPU工作生成 452
14.2.3 零拷贝 458
14.3 性能分析工具 463
14.3.1 Windows性能工具包和GPUView 464
14.3.2 GPU PerfStudio 466
14.3.3 调试来使应用运行的更快 468
14.4 总结 480
第 15章 调试和稳定性 481
15.1 调试你的程序 481
15.2 安全性和健壮性 486
15.2.1 图像重置 486
15.2.2 读取边界检查 488
15.3 总结 489
附录A 超级宝典工具 490
附录B SBM文件格式 494
附录C OpenGL的功能和版本 500
OpenGL超级宝典(第7版)的书评

总的来说,这本书还是很不错的,排版什么的都看的听舒服的,就是翻译的太烂啦!不是一般的烂,本来很想看的,但是……严重鄙视这本书的译者!

2010-08-23 10:37:24

有些语句翻译的比较难以理解,严重怀疑译者是不是计算机专业的从业人员。对文字的校对方面,也难以让人接受,时不时的会发现错误,影响阅读感受。 比如:Visual C++ 2008 Express Edition,翻译成Visual C++ 2008速成版。其他的就不说了,就这个翻译就够奇葩的了。 原书的写法...

2013-03-01 21:35:43

严重鄙视出版社。这本书硬生生的少了好几百页吧,和英文版相比?大家没有发现?api参考表中,api只写到s,后面tuvwxyz都没有了?难道没人发现?难道就欺负中国人傻!难道中国人就不看完?出版社的态度令人发指!

2012-03-26 11:17:59

看了几十页我觉得译得还不错,对照了一些句子,也都通顺、准确。 . . @但碰巧看到一处,恐怕是个小小的误译: - “许多绘图和图形函数库使用窗口坐标(像素)来执行绘图命令,使用真实的浮点(看上去有点随意)坐标系统用于渲染。这常常是许多新手非常难以习惯的方法。” 原文...

2012-08-11 22:15:53

《OpenGL SuperBible 5th》 非常好的一本书,很适合新手开始学习“现代”的OpenGL 3.3。 虽然有人说书中用的GLTools封装得太多,不用担心,实际上这并不影响学习(下文中会解释) 书的前5章中规中矩地介绍了一些3D基本知识,并且可以让读者用封装好的工具快速地构建出3D图形,...

2014-01-23 10:50:22

书中排版,印刷错误百出,居然前后有一模一样的一段文字,太让人心寒了,不知道付飞拿到书后是什么感觉,真是误人子弟啊。 书中排版,印刷错误百出,居然前后有一模一样的一段文字,太让人心寒了,不知道付飞拿到书后是什么感觉,真是误人子弟啊。 书中排版,印刷错误百出,居...

2015-04-26 13:42:12

《OpenGL超级宝典(第4版)》是OpenGL及3D图形编程最好的入门指南,涵盖了使用最新版本的OpenGL进行编程所需要的主要知识。全书分3个部分,共22章,另有3个附录。第一部分包括第1章到第14章,介绍如何构建一个使用OpenGL的程序,如何设置3D渲染环境,以及如何创建基本对象和光线...

2012-05-13 19:42:01