当前位置:主页 > 书籍配套资源 > OpenGL配套资源
《OpenGL超级宝典(第5版)》配套资源

《OpenGL超级宝典(第5版)》配套资源

  • 更新:2022-04-19
  • 大小:1 GB
  • 类别:OpenGL
  • 作者:[美]赖特
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

编辑推荐

亚马逊5星图书
作者为OpenGL资深专家
内容全面的参考指南
针对OpenGL 3.3全面升级

内容简介

《OpenGL超级宝典(第5版)》是OpenGL及3D图形编程最好的入门指南,涵盖了使用*版本的OpenGL进行编程所需要的主要知识。全书分三部分,共16章,另有3个附录。第一部分包括第1章到第7章,介绍如何构建一个使用OpenGL的程序、如何设置3D渲染环境,以及如何创建基本对象和光线并对他们进行着色。然后深入研究如何使用OpenGL,并向读者介绍GLSL,以及如何创建自己的着色器。第二部分包括第8章到第12章,将进行更深入的研究,而懂得如何应用这些高级特性将使读者超越业余3D玩家的水平。这一部分不仅能够使我们掌握更多的可视化效果,同时也考虑了性能表现。第三部分包括第13章到第16章,着重介绍OpenGL如何支持和连接Windows、Mac OS X、Linux和掌上设备。附录部分给出了更多阅读建议、术语表和API参考介绍。  《OpenGL超级宝典(第5版)》适合希望精通OpenGL以便对图形编程和3D图形知识进行扩展的程序员阅读,也可以帮助经验丰富的OpenGL程序员学习如何移植自己的应用程序。本书既可以作为学习OpenGL的教材,也可以作为随时查阅的参考手册。

作者简介

Richard S. Wright, Jr.是Software Bisque公司的资深软件工程师,在这家公司使用OpenGL开发多媒体宇航和天文软件。他曾经是OpenGL ARB在实时3D领域的代表人物,编写了大量基于OpenGL的游戏、科学与医学应用程序、数据库可视化工具和教育软件。 Nicholas Haemel在ATI和AMD的8年中引导了3D图形硬件和软件结构设计与开发,并对OpenGL的3.0、3.1、3.2和3.3标准作出了贡献。 Graham Sellers是AMD的OpenGL小组的一位管理者,领导着一个OpenGL软件开发团队,致力于开发AMD的OpenGL驱动程序。他是ARB中的AMD代表,并对核心OpenGL 3.2、3.3和4.0规范作出了贡献。 Benjamin Lipchak是苹果公司的软件工程主管,领导着一个致力于图形开发技术和标准测试程序的团队,并负责iPhone和iPod touch的OpenGL ES一致性测试。他曾经在AMD管理一个OpenGL ES驱动程序小组,并领导着Khronos的OpenGL生态系统小组,在那里他创建了OpenGL SDK和OpenGL Pipeline等刊物。

目录

  • 第一部分 基本概念
  • 第1章 3D图形和OpenGL简介 2
  • 1.1 计算机图形的简单历史回顾 2
  • 1.1.1 进入电子时代 3
  • 1.1.2 走向3D 3
  • 1.2 3D图形技术和术语 6
  • 1.2.1 变换(Transformation)和投影(Projection) 6
  • 1.2.2 光栅化(Rasterization) 6
  • 1.2.3 着色 7
  • 1.2.4 纹理贴图 8
  • 1.2.5 混合 9
  • 1.2.6 将点连接起来 9
  • 1.3 3D图形的常见用途 9
  • 1.3.1 实时3D 10
  • 1.3.2 非实时3D 12
  • 1.3.3 着色器 12
  • 1.4 3D编程的基本原则 13
  • 1.4.1 并非工具包 13
  • 1.4.2 坐标系统 13
  • 1.4.3 投影:从3D到2D 17
  • 1.5 总结 19
  • 第2章 入门指南 20
  • 2.1 什么是OpenGL? 20
  • 2.1.1 标准的演化 21
  • 2.1.2 OpenGL的未来 24
  • 2.2 使用OpenGL 27
  • 2.2.1 支持阵容 28
  • 2.2.2 OpenGL API特性 29
  • 2.2.3 OpenGL错误 31
  • 2.2.4 确认版本 31
  • 2.2.5 使用glHint获取线索 32
  • 2.2.6  OpenGL状态机 32
  • 2.3 建立Windows项目 33
  • 2.3.1 包含路径 34
  • 2.3.2 创建项目 35
  • 2.3.3 添加文件 36
  • 2.4 建立Mac OS X项目 38
  • 2.4.1 自定义创建设置 38
  • 2.4.2 创建新项目 39
  • 2.4.3 框架、头文件和库 41
  • 2.5 第一个三角形 43
  • 2.5.1 要包含什么 45
  • 2.5.2 启动GLUT 45
  • 2.5.3 坐标系基础 47
  • 2.5.4 完成设置 50
  • 2.5.5 言归正传 52
  • 2.6 加点儿活力! 53
  • 2.6.1 特殊按键 53
  • 2.6.2 刷新显示 54
  • 2.6.3 简单的动画片 54
  • 2.7 总结 55
  • 第3章 基础渲染 56
  • 3.1 基础图形管线 57
  • 3.1.1 客户机-服务器 57
  • 3.1.2 着色器 58
  • 3.2 创建坐标系 60
  • 3.2.1 正投影 60
  • 3.2.2 透视投影 61
  • 3.3 使用存储着色器 61
  • 3.3.1 属性 62
  • 3.3.2 Uniform值 62
  • 3.4 将点连接起来 64
  • 3.4.1 点和线 64
  • 3.4.2 绘制3D三角形 68
  • 3.4.3 单独的三角形 68
  • 3.4.4 一个简单批次容器 72
  • 3.4.5 不希望出现的几何图形 73
  • 3.4.6 多边形偏移 78
  • 3.4.7 裁剪 80
  • 3.5 混合 81
  • 3.5.1 组合颜色 81
  • 3.5.2 改变混合方程式 84
  • 3.5.3 抗锯齿 85
  • 3.5.4 多重采样 87
  • 3.6 小结 89
  • 第4章 基础变换:初识向量/矩阵 90
  • 4.1 本章是令人生畏的数学课吗 90
  • 4.2 3D图形数学速成课 91
  • 4.2.1 向量 91
  • 4.2.2 矩阵 94
  • 4.3 理解变换 95
  • 4.3.1 视觉坐标 95
  • 4.3.2 视图变换 96
  • 4.3.3 模型变换 96
  • 4.3.4 模型视图的二元性 98
  • 4.3.5 投影变换 98
  • 4.3.6 视口变换 99
  • 4.4 模型视图矩阵 99
  • 4.4.1 矩阵构造 100
  • 4.4.2 运用模型视图矩阵 103
  • 4.5 更多对象 105
  • 4.5.1 使用三角形批次类 105
  • 4.5.2 创建一个球体 106
  • 4.5.3 创建一个花托 106
  • 4.5.4 创建一个圆柱或圆锥 107
  • 4.5.5 创建一个圆盘 108
  • 4.6 投影矩阵 108
  • 4.6.1 正投影 109
  • 4.6.2 透视投影 110
  • 4.6.3 模型视图投影矩阵 111
  • 4.7 变换管线 113
  • 4.7.1 使用矩阵堆栈 114
  • 4.7.2 管理管线 115
  • 4.7.3 加点调料 118
  • 4.8 使用照相机和角色进行移动 119
  • 4.8.1 角色帧 120
  • 4.8.2 欧拉角:“卢克!请使用帧” 121
  • 4.8.3 照相机管理 121
  • 4.8.4 添加更多角色 123
  • 4.8.5 关于光线 125
  • 4.9 小结 126
  • 第5章 基础纹理 127
  • 5.1 原始图像数据 128
  • 5.1.1 像素包装 129
  • 5.1.2 像素图 130
  • 5.1.3 包装的像素格式 132
  • 5.1.4 保存像素 133
  • 5.1.5 读取像素 134
  • 5.2 载入纹理 137
  • 5.2.1 使用颜色缓冲区 138
  • 5.2.2 更新纹理 138
  • 5.2.3 纹理对象 139
  • 5.3 纹理应用 140
  • 5.3.1 纹理坐标 140
  • 5.3.2 纹理参数 142
  • 5.3.3 综合运用 144
  • 5.4 Mip贴图 148
  • 5.4.1 Mip贴图过滤 149
  • 5.4.2 生成Mip层 150
  • 5.4.3 活动的Mip贴图 150
  • 5.5 各向异性过滤 158
  • 5.6 纹理压缩 160
  • 5.6.1 压缩纹理 160
  • 5.6.2 加载压缩纹理 161
  • 5.6.3 最后一个示例 162
  • 5.7 小结 163
  • 第6章 跳出“盒子”:非存储着色器 164
  • 6.1 初识OpenGL着色语言 164
  • 6.1.1 变量和数据类型 165
  • 6.1.2 存储限定符 168
  • 6.1.3 真正的着色器 169
  • 6.1.4 编译、绑定和连接 172
  • 6.1.5 使用着色器 177
  • 6.1.6 Provoking Vertex 178
  • 6.2 着色器统一值 179
  • 6.2.1 寻找统一值 179
  • 6.2.2 设置标量和向量统一值 180
  • 6.2.3 设置统一数组 180
  • 6.2.4 设置统一矩阵 181
  • 6.2.5 平面着色器 182
  • 6.3 内建函数 184
  • 6.3.1 三角函数 184
  • 6.3.2 指数函数 184
  • 6.3.3 几何函数 185
  • 6.3.4 矩阵函数 185
  • 6.3.5 向量相关函数 186
  • 6.3.6 常用函数 187
  • 6.4 模拟光线 189
  • 6.4.1 简单漫射光 189
  • 6.4.2 点光源漫反射着色器 191
  • 6.4.3 ADS光照模型 194
  • 6.4.4 Phong着色 197
  • 6.5 访问纹理 199
  • 6.5.1 只有纹理单元 200
  • 6.5.2 照亮纹理单元 201
  • 6.5.3 丢弃片段 203
  • 6.5.4 卡通着色(Cell Shading)——将纹理单元作为光线 205
  • 6.6 小结 207
  • 第7章 纹理高级知识 208
  • 7.1 矩形纹理 208
  • 7.1.1 加载矩形纹理 209
  • 7.1.2 使用矩形纹理 209
  • 7.2 立方体贴图 212
  • 7.2.1 加载立方体贴图 212
  • 7.2.2 创建天空盒 213
  • 7.2.3 创建反射 215
  • 7.3 多重纹理 216
  • 7.3.1 多重纹理坐标 217
  • 7.3.2 多重纹理示例 217
  • 7.4 点精灵(点块纹理) 219
  • 7.4.1 使用点 220
  • 7.4.2 点大小 220
  • 7.4.3 综合运用 221
  • 7.4.4 点参数 223
  • 7.4.5 异形点 224
  • 7.4.6 点的旋转 225
  • 7.5 纹理数组 226
  • 7.5.1 加载2D纹理数组 226
  • 7.5.2 纹理数组索引 228
  • 7.5.3 访问纹理数组 228
  • 7.6 纹理代理 229
  • 7.7 小结 230
  • 第二部分 深入探索
  • 第8章 缓冲区对象:存储尽在掌握 232
  • 8.1 缓冲区 233
  • 8.1.1 创建自己的缓冲区 233
  • 8.1.2 填充缓冲区 234
  • 8.1.3 像素缓冲区对象 235
  • 8.1.4 缓冲区对象 241
  • 8.2 帧缓冲区对象,摆脱窗口的限制 242
  • 8.2.1 如何使用FBO 243
  • 8.2.2 渲染缓冲区对象 243
  • 8.2.3 绘制缓冲区 245
  • 8.2.4 帧缓冲区的完整性 247
  • 8.2.5 在帧缓冲区中复制数据 250
  • 8.2.6 FBO综合运用 251
  • 8.3 渲染到纹理 254
  • 8.4 小结 259
  • 第9章 高级缓冲区:超越基础水平 260
  • 9.1 获得数据 260
  • 9.1.1 映射缓冲区 261
  • 9.1.2 复制缓冲区 262
  • 9.2 控制像素着色器表现,映射片段输出 262
  • 9.3 新一代硬件的新格式 264
  • 9.3.1 浮点——最终的真正精确 264
  • 9.3.2 多重采样 276
  • 9.3.3 整数 279
  • 9.3.4 sRGB 280
  • 9.3.5 纹理压缩 281
  • 9.4 小结 283
  • 第10章 片段操作:管线的终点 284
  • 10.1 裁剪——将几何图形剪切到希望的大小 285
  • 10.2 多重采样 285
  • 10.2.1 样本覆盖 285
  • 10.2.2 样本遮罩 286
  • 10.2.3 综合运用 287
  • 10.3 模板操作 290
  • 10.4 深度测试 292
  • 10.4.1 深度截取 292
  • 10.5 进行混合 293
  • 10.5.1 混合方程式 293
  • 10.5.2 混合函数 294
  • 10.5.3 综合运用 295
  • 10.6 抖动 296
  • 10.7 逻辑操作 297
  • 10.8 遮罩输出 298
  • 10.8.1 颜色 298
  • 10.8.2 深度 298
  • 10.8.3 模板 298
  • 10.8.4 用途 299
  • 10.9 小结 299
  • 第11章 高级着色器应用 300
  • 11.1 高级顶点着色器 300
  • 11.1.1 在顶点着色器中进行物理模拟 301
  • 11.2 几何着色器 306
  • 11.2.1 直通几何着色器 306
  • 11.2.2 在应用程序中使用几何着色器 308
  • 11.2.3 在几何着色器中丢弃几何图形 311
  • 11.2.4 在几何着色器中修改几何图形 313
  • 11.2.5 在几何着色器中生成几何图形 314
  • 11.2.6 在几何着色器中改变图元类型 317
  • 11.2.7 由几何着色器引入的新图元类型 319
  • 11.3 高级片段着色器 321
  • 11.3.1 片段着色器中的后期处理——颜色校正 322
  • 11.3.2 片段着色器中的后期处理——卷积 323
  • 11.3.3 在片段着色器中生成图像数据 326
  • 11.3.4 在片段着色器中丢弃工作 328
  • 11.3.5 逐片段控制深度 329
  • 11.4 更高级的着色器函数 330
  • 11.4.1 插值和存储限定符 330
  • 11.4.2 高级内建函数 333
  • 11.5 统一缓冲区对象 334
  • 11.5.1 建立统一块 335
  • 11.6 小结 342
  • 第12章 高级几何图形管理 343
  • 12.1 查询功能——收集OpenGL管线相关信息 343
  • 12.1.1 准备查询 344
  • 12.1.2 发出查询 345
  • 12.1.3 取回查询结果 345
  • 12.1.4 使用查询结果 346
  • 12.1.5 让OpenGL决定 349
  • 12.1.6 测量执行命令所需时间 350
  • 12.2 在GPU内存中存储数据 352
  • 12.2.1 使用缓冲区存储顶点数据 353
  • 12.2.2 在缓冲区中保存顶点索引 356
  • 12.3 使用顶点数组对象来组织缓冲区 358
  • 12.4 高效地绘制大量几何图形 359
  • 12.4.1 组合绘制函数 360
  • 12.4.2 使用图元重启对几何图形进行组合 361
  • 12.4.3 实例渲染 362
  • 12.4.4 自动获得数据 367
  • 12.5 存储变换的顶点——变换反馈 371
  • 12.5.1 变换反馈 371
  • 12.5.2 关闭光栅化 376
  • 12.5.3 使用图元查询对顶点进行计数 376
  • 12.5.4 使用图元查询的结果 378
  • 12.5.5 变换反馈的应用实例 379
  • 12.6 裁剪并确定绘制内容 386
  • 12.6.1 裁剪距离——自定义裁剪空间 387
  • 12.7 在OpenGL开始绘制时进行同步 389
  • 12.8 小结 392
  • 第三部分 特定平台应用
  • 第13章 Windows上的OpenGL 394
  • 13.1 Windows中的OpenGL实现 395
  • 13.1.1 微软的OpenGL 395
  • 13.1.2 现代图形驱动程序 395
  • 13.1.3 扩展OpenGL 396
  • 13.1.4 WGL扩展 398
  • 13.2 基本窗口渲染 399
  • 13.2.1 GDI设备环境 399
  • 13.2.2 像素格式 400
  • 13.2.3 OpenGL渲染环境 406
  • 13.3 综合运用 409
  • 13.3.1 创建窗口 410
  • 13.4 全屏渲染 414
  • 13.5 双重缓冲 415
  • 13.5.1 消除视觉撕裂 415
  • 13.6 小结 416
  • 第14章 OS X上的OpenGL 417
  • 14.1 OpenGL在Mac上的4种接口 417
  • 14.2 在OpenGL中使用Cocoa 418
  • 14.2.1 创建一个Cocoa程序 418
  • 14.2.2 综合运用 423
  • 14.2.3 双缓冲还是单缓冲 425
  • 14.2.4 球体世界 425
  • 14.3 全屏渲染 429
  • 14.3.1 在Cocoa中进行全屏显示 430
  • 14.4 CGL 435
  • 14.4.1 同步帧速率 435
  • 14.4.2 提高填充性能 436
  • 14.4.3 多线程OpenGL 437
  • 14.5 小结 437
  • 第15章 Linux上的OpenGL 438
  • 15.1 基础知识 438
  • 15.1.1 简史 439
  • 15.1.2 什么是X Window 439
  • 15.2 入门讲解 439
  • 15.2.1 检查OpenGL 440
  • 15.2.2 设置Mesa 440
  • 15.2.3 设置Mesa硬件驱动程序 441
  • 15.2.4 设置GLUT 和 GLEW 441
  • 15.2.5 创建OpenGL应用程序 442
  • 15.3 GLX——X Window的接口 443
  • 15.3.1 显示和X Window 444
  • 15.3.2 配置管理和显示效果 444
  • 15.3.3 窗口和渲染表面 447
  • 15.3.4 OpenGL和GLX扩展 448
  • 15.3.5 环境管理 448
  • 15.3.6 同步 451
  • 15.3.7 GLX查询 452
  • 15.3.8 综合运用 453
  • 15.4 小结 455
  • 第16章 OpenGL ES:移动设备上的OpenGL 456
  • 16.1 精简的OpenGL 456
  • 16.1.1 ES指什么 457
  • 16.1.2 历史概述 457
  • 16.2 版本选择 458
  • 16.2.1 ES 2.0 459
  • 16.3 ES环境 463
  • 16.3.1 应用程序设计的注意事项 463
  • 16.3.2 有限环境的处理 464
  • 16.3.3 定点数学 464
  • 16.4 EGL: 新的窗口环境 465
  • 16.4.1 EGL显示 466
  • 16.4.2 创建窗口 467
  • 16.4.3 环境管理 470
  • 16.4.4 呈现缓冲区和渲染同步 471
  • 16.4.5 更多关于EGL的内容 472
  • 16.5 处理嵌入式环境 473
  • 16.5.1 流行的操作系统 473
  • 16.5.2 供应商特定扩展 473
  • 16.5.3 个人玩家 473
  • 16.6 苹果掌上平台 474
  • 16.6.1 设置iPhone项目 474
  • 16.6.2 移植到iPhone 477
  • 16.7 小结 483
  • 附录A 更多阅读建议 484
  • 附录B 词汇表 486
  • 附录C (核心)OpenGL 3.3参考 489

资源下载

资源下载地址1:https://box.lenovo.com/l/BJY5OQ

相关资源

网友留言