
V.斯科特·戈登 约翰·克莱维吉
本书以OpenGL和C++作为工具,介绍计算机图形学编程的相关内容。全书从图形编程的基础和准备工作讲起,介绍了OpenGL图像管线、3D模型、纹理贴图、光照、阴影、天空和背景、增强表面细节、曲面细分、几何着色器、水面模拟、光线追踪等计算机图形学编程技术。本书各章配备了不同形式的习题,供读者巩固所学知识。 本书适合作为高等院校计算机科学专业的计算机图形编程课程的教材或辅导书,也适合对计算机图形编程感兴趣的读者自学。
3D空间中的点可以通过使用形如(2, 8, −3)的符号列出x、y、z的值来表示。不过,如果用齐次坐标—— 一种在19世纪初首次描述的表示法来表示点会更有用。在每个点的齐次坐标有4个值,前3个值表示x、y和z,第四个值w总是非零值,通常为1。因此,我们会将之前的点表示为(2, 8, −3, 1)。正如我们稍后将要看到的,齐次坐标将会使我们的图形计算更高效。 4×4矩阵与4×4矩阵相乘如下: [插图] [插图] 矩阵相乘也经常叫作合并。稍后我们会看到,它可以用于将一系列矩阵变换合并成一个矩阵。这种合并矩阵变换的能力来自矩阵乘法的结合律。 考虑如下运算序列: [插图] 我们将点Point与Matrix3相乘,之后将结果与Matrix2相乘,最后将结果与Matrix1相乘,其结果是一个新的点NewPoint。结合律确保了该计算与如下计算结果相同: [插图] 我们先将3个矩阵相乘,建立Matrix1、Matrix2、Matrix3的连接。如果我们称其为MatrixC,我们就可以将之前的运算写作: [插图] 我们在第4章会看到这么做的好处。我们需要经常将相同的一系列矩阵变换应用到场景中的每个点上。通过预先一次计算好这些矩阵的合并,就可以成倍减少总的矩阵运算量。
买了实体书看完了,跟着书上的案例敲了一遍以后入门还是挺容易的,知道了着色器,模型,纹理,光照材质,以及一些视觉效果的原理。感觉要进一步学习还需要配合其他书一起看
随实例学习,不过书中存在一些印刷代码错误、但是随书附赠代码正确的问题,建议配合原书附赠代码使用。