| 作者 |
| V.斯科特·戈登(V. Scott Gordon) 约翰·克莱维吉(Joh |
| 丛书名 |
| 国外著名高等院校信息科学与技术优秀教材 |
| 出版社 |
| 人民邮电出版社 |
| ISBN |
| 9787115521286 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书以C++和OpenGL 作为工具,教授计算机图形学编程。全书共14 章和3 个附录。 首先从图形编程的基础和准备工作开始,依次介绍了OpenGL 图像管线、图形编程数学基础、管理3D 图形数据、纹理贴图、3D 模型、光照、阴影、天空和背景、增强表面细节、参数曲面、曲面细分、几何着色器,以及其他相关的图形编程技术。附录分别介绍了Windows、macOS 平台上的安装设置,以及Nsight 图形调试器的应用。本书每章*后配备了不同形式的习题,供读者巩固所学知识。 本书适合作为高等院校计算机科学专业的计算机图形编程课程的教材或辅导书,也适合对计算机图形编程感兴趣的读者自学。 |
| 目录 |
| 第 1 章 入门.1 1.1 语言和库.1 1.1.1 C++2 1.1.2 OpenGL / GLSL 2 1.1.3 窗口管理.2 1.1.4 扩展库.3 1.1.5 数学库.3 1.1.6 纹理管理.3 1.1.7 可选库.4 1.2 安装和配置.4 参考资料4 第 2 章 OpenGL 图像管线.5 2.1 OpenGL 管线5 2.1.1 C++/OpenGL 应用程序.6 2.1.2 顶点着色器和片段着色器.9 2.1.3 曲面细分着色器.12 2.1.4 几何着色器.13 2.1.5 光栅化.14 2.1.6 片段着色器.15 2.1.7 像素操作.16 2.2 检测OpenGL 和GLSL错误.17 2.3 从文件读取GLSL 源代码.19 2.4 从顶点构建对象.20 2.5 场景动画.21 2.6 C++代码文件结构23 补充说明.24 习题24 参考资料25 第3 章 数学基础. 26 3.1 3D 坐标系统. 26 3.2 点 26 3.3 矩阵 27 3.4 变换矩阵 29 3.4.1 平移矩阵. 29 3.4.2 缩放矩阵. 29 3.4.3 旋转矩阵. 30 3.5 向量 31 3.5.1 点积的应用. 32 3.5.2 叉积的应用. 33 3.6 局部和世界空间 33 3.7 视觉空间和合成相机 34 3.8 投影矩阵 36 3.8.1 透视投影矩阵. 36 3.8.2 正射投影矩阵. 37 3.9 LookAt 矩阵. 38 3.10 用来构建矩阵变换的GLSL函数. 39 补充说明 40 习题. 40 参考资料. 41 第4 章 管理3D 图形数据. 42 4.1 缓冲区和顶点属性 42 4.2 统一变量 44 4.3 顶点属性插值 45 4.4 模型-视图和透视矩阵. 46 4.5 我们的第 一个3D 程序—— 一个3D 立方体 47 4.6 渲染一个对象的多个副本. 53 4.7 在同一个场景中渲染多个不同模型.57 4.8 矩阵堆栈.59 4.9 应对“Z 冲突”伪影64 4.10 图元的其他选项.65 4.11 性能优先的编程方法.66 4.11.1 尽量减少动态内存空间分配66 4.11.2 预先计算透视矩阵.67 4.11.3 背面剔除.68 补充说明.69 习题70 参考资料70 第5 章 纹理贴图71 5.1 加载纹理图像文件.71 5.2 纹理坐标.72 5.3 创建纹理对象.74 5.4 构建纹理坐标.74 5.5 将纹理坐标载入缓冲区.75 5.6 在着色器中使用纹理:采样器变量和纹理单元.76 5.7 纹理贴图:示例程序.77 5.8 多级渐远纹理贴图.79 5.9 各向异性过滤.83 5.10 环绕和平铺.84 5.11 透视变形.85 5.12 材质——更多OpenGL 细节.86 补充说明.86 习题87 参考资料87 第6 章 3D 模型88 6.1 程序构建模型——构建一个球体.88 6.2 OpenGL 索引——构建一个环面.94 6.2.1 环面.94 6.2.2 OpenGL 中的索引95 6.3 加载外部构建的模型.99 补充说明. 106 习题. 107 参考资料. 107 第7 章 光照 108 7.1 光照模型 108 7.2 光源 109 7.3 材质.111 7.4 ADS 光照计算. 112 7.5 实现ADS 光照 114 7.5.1 Gouraud 着色(双线性光强插值法) 115 7.5.2 Phong 着色. 120 7.6 结合光照与纹理 124 补充说明. 126 历史记录. 126 习题. 126 参考资料. 127 第8 章 阴影 128 8.1 阴影的重要性 128 8.2 投影阴影 129 8.3 阴影体 129 8.4 阴影贴图 130 8.4.1 阴影贴图(第 1 轮)——从光源位置“绘制”物体 131 8.4.2 阴影贴图(中间步骤)——将Z 缓冲区复制到纹理 132 8.4.3 阴影贴图(第 2 轮)——渲染带阴影的场景 132 8.5 阴影贴图示例 135 8.6 阴影贴图的伪影 139 8.7 柔和阴影 142 8.7.1 现实世界中的柔和阴影 142 8.7.2 生成柔和阴影——百分比邻近滤波(PCF) . 143 8.7.3 柔和阴影/PCF 程序146 补充说明.148 习题148 参考资料149 第9 章 天空和背景.150 9.1 天空盒.150 9.2 天空穹顶.152 9.3 实现天空盒.153 9.3.1 从头开始构建天空盒.153 9.3.2 使用OpenGL 立方体贴图.156 9.4 环境贴图.158 补充说明.161 习题162 参考资料163 第 10 章 增强表面细节.164 10.1 凹凸贴图.164 10.2 法线贴图.166 10.3 高度贴图.172 补充说明.174 习题175 参考资料175 第 11 章 参数曲面.176 11.1 二次贝塞尔曲线.176 11.2 三次贝塞尔曲线.177 11.3 二次贝塞尔曲面.180 11.4 三次贝塞尔曲面.181 补充说明.183 习题183 参考资料183 第 12 章 曲面细分.184 12.1 OpenGL 中的曲面细分184 12.2 贝塞尔曲面细分.188 12.3 地形、高度图的细分.193 12.4 控制细节级别(LOD).198 补充说明. 200 习题. 201 参考资料. 201 第 13 章 几何着色器 202 13.1 OpenGL 中的逐个图元处理. 202 13.2 修改图元 203 13.3 删除图元 206 13.4 添加图元 207 13.5 更改图元类型 209 补充说明. 211 习题. 211 参考资料. 211 第 14 章 其他技术 212 14.1 雾 212 14.2 复合、混合、透明度. 213 14.3 用户定义剪裁平面 218 14.4 3D 纹理 219 14.5 噪声 223 14.6 噪声应用——大理石. 227 14.7 噪声应用——木材. 230 14.8 噪声应用——云. 233 14.9 噪声应用——特殊效果. 236 补充说明. 238 习题. 238 参考资料. 239 附录A PC(Windows)上的安装与设置 240 A.1 安装库和开发环境 240 A.1.1 安装开发环境. 240 A.1.2 安装OpenGL / GLSL. 240 A.1.3 准备GLFW 240 A.1.4 准备GLEW 241 A.1.5 准备GLM. 241 A.1.6 准备SOIL2. 241 A.1.7 准备共享的“lib”和“include”文件夹241 A.2 在MS Visual Studio 中开发和部署OpenGL 项目242 参考资料243 附录B Macintosh(macOS)平台上的安装与设置.244 B.1 安装库和开发环境244 B.1.1 准备并安装依赖库.244 B.1.2 准备开发环境.245 B.2 修改Mac 的C++ / OpenGL /GLSL 应用程序代码.246 B.2.1 修改C++代码 247 B.2.2 修改GLSL 代码. 247 B.2.3 补充说明. 248 参考资料. 248 附录C 使用Nsight 图形调试器. 249 C.1 关于NVIDIANsight 249 C.2 设置Nsight 249 C.3 在Nsight 中运行C++/OpenGL应用程序. 250 参考资料. 252 |