OpenGL超级宝典
更新日期:2024-07-13 00:59:56
书店:人民邮电出版社
出版时间:2020-10
浏览量:1257
价格:0.0¥

书籍下载

内容介绍

产品特色


编辑推荐

OpenGL是实时计算机图形领域领先的3D API。这是一本经典的OpenGL开发教程,全面介绍了OpenGL 4.5的API、关键扩展、着色器和其他基础知识,并基于实例讲解了OpenGL 4.5的各项功能。另外,本书在几种流行的平台上引入了OpenGL,并提供了多样化的实践技巧和详尽的指导。
作为经典图书的升级版,本书重点介绍了许多OpenGL 4.5的新功能,包括重要的ARB和KHR扩展,这些功能现已成为标准的一部分,并且遵循接近零驱动开销(Approach Zero Driver Overhead,AZDO)规则。书中针对主要的增强功能提供了丰富的示例程序。

内容简介

本书是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扩展。

目录

第 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