版本:pdf 中文扫描版大小:22.8M
类别:程序开发系统:WinAll, WinXP
立即下载opengl编程指南第七版是对美版OpenGL编程指南原书第7版的中文电子扫描版pdf简介,附带opengl编程指南第七版源码,内容详细,图文高清可见,有需要的用户欢迎来IT猫扑下载~
《OpenGL编程指南(原书第7版)》共分15章。前5章描述了一些基本信息,读者需要理解这些内容,才能在场景中绘制正确着色和光照的三维物体。
·第1章对OpenGL可以实现的功能进行简要的介绍。该章还提供了一个简单的OpenGL程序,并介绍需要了解的一些基本编程细节,有助于学习后续章节的内容。
·第2章解释如何创建一个物体的三维几何图形描述,并最终把它绘制到屏幕上。
·第3章描述三维模型在绘制到二维屏幕之前如何进行变换。我们可以控制这些变换,显示模型的特定视图。
·第4章描述如何指定颜色以及用于绘制物体的着色方法。
·第5章解释如何控制围绕一个物体的光照条件,以及这个物体如何对光照作出反应(也就是说,它是如何反射或吸收光线的)。光照是一个重要的主题,因为物体在没有光照的情况下看上去往往没有立体感。
接下来的几章说明如何对三维场景进行优化以及如何添加一些高级特性。在没有精通OpenGL之前,读者可以选择不使用这些高级特性。有些特别高级的主题在出现时会有特殊的标记。
·第6章描述创建逼真场景所需要的一些基本技巧:alpha混合(创建透明物体)、抗锯齿(消除锯齿状边缘)、大气效果(模拟雾和烟雾)以及多边形偏移(在着重显示填充多边形的边框时消除不良视觉效果)。
·第7章讨论如何存储一系列的OpenGL命令,用于在以后执行。我们可以使用这个特性来提高OpenGL程序的性能。
·第8章讨论如何操作表示位图或图像的二维数据。位图的一种常见用途就是描述字体中的字符。
·第9章解释如何把称为纹理的一维、二维和三维图像映射到三维物体表面。纹理贴图可以实现许多非常精彩的效果。
·第10章描述OpenGL实现中可能存在的所有缓冲区,并解释如何对它们进行控制。我们可以使用这些缓冲区实现诸如隐藏表面消除、模板、屏蔽、运动模糊和景深聚焦等效果。
·第11章显示了如何使用GLU(OpenGL Utility Library,OpenGL工具函数库)中的分格化和二次方程函数。
·第12章介绍生成曲线和表面的高级技巧。
·第13章说明如何使用OpenGL的选择机制来选择屏幕上的一个物体。此外,该章还解释了反馈机制,它允许我们收集OpenGL所产生的绘图信息,而不是在屏幕上绘制物体。
·第14章描述如何用巧妙的或意想不到的方法来使用OpenGL,产生一些有趣的结果。这些技巧是通过对OpenGL及其技术前驱Silicon Graphics IRIS图形函数库的多年应用和实践总结出来的。
·第15章讨论OpenGL 2.0所引入的变化,包括对OpenGL着色语言的介绍。OpenGL着色语言通常又称为GLSL,它允许对OpenGL的顶点和片断处理阶段进行控制。这个特性可以极大地提高图像的质量,充分体现OpenGL的计算威力。
另外,《OpenGL编程指南(原书第7版)》还包括几个非常实用的附录:
·附录A讨论了用于处理窗口系统操作的函数库。GLUT(OpenGL实用工具库)具有可移植性,它可以使代码更短、更紧凑。
·附录B列出了OpenGL所维护的状态变量,并描述了如何获取它们的值。
·附录C介绍了隐藏在矩阵转换后面的一些数学知识。
·附录D简单描述了窗口系统特定的函数库所提供的函数,它们进行了扩展,以支持OpenGL渲染。本附录讨论了X窗口系统、Apple的Mac OS和Microsoft Windows的窗口系统接口。
·附录E对OpenGL所执行的操作提供了一个技术性的浏览,简要描述了当应用程序执行时这些操作的出现顺序。
·附录F列出了一些基于OpenGL设计者思路的编程提示,这些可能对读者有用。
·附录G描述了OpenGL实现在什么时候以及什么地方必须生成OpenGL规范所描述的精确像素。
·附录H描述了如何计算不同类型的几何物体的法线向量。
·附录I列出了OpenGL着色语言所提供的所有内置的变量和函数。
·附录J介绍了各种浮点数、共享指数像素和纹理单元格式。
·附录K介绍了存储单成分和双成分压缩纹理的纹理格式。
·附录L介绍了GLSL 1.40的uniform变量缓存区的标准内存布局。
最后,《OpenGL编程指南(原书第7版)》还提供了一个术语表,对本书所使用的一些关键术语进行了定义。
《OpenGL编程指南(原书第7版)》包含了OpenGL 3.0和OpenGL 3.1的新的和更新的内容。通过这些版本(这也是本书值得庆祝的18岁生日),OpenGL经历了与其之前的版本最显著的改变。3.0版添加了很多新的功能,并且添加了废弃模型,它建立了一种方法把陈旧的功能从库中删除。注意,只有新功能添加到了3.0版中,才会使其在源代码和二进制文件上都和之前的版本向后兼容。然而,很多功能标记为废弃的,表示可能在API未来的版本中删除。
《OpenGL编程指南(原书第7版)》介绍的和OpenGL 3.0相关的更新内容包括:
OpenGL中的新功能:
·OpenGL着色语言更新,创建了GLSL 1.30版。
·条件渲染。
·对映射缓冲区对象的内存的细粒度访问以用于更新和读取。
·除了纹理图像格式(在OpenGL 2.1中加入),还有用于帧缓冲区的浮点数像素格式。
·帧缓冲区和渲染缓冲区对象。
·为小的动态范围数据采用紧凑的浮点表示,以减少内存存储占用。
·改进了对复制数据时的多采样缓冲区交互的支持。
·纹理图像和渲染缓冲区中的非规范化的整数值保留它们最初的表示,相对于OpenGL将这些值映射到范围[0,1]的常规操作。
·支持一维纹理数组和二维纹理数组。
·附加的包装像素格式支持访问新的渲染缓冲区。
·针对多渲染目标,分开混合和写屏蔽控制。
·纹理压缩格式。
·纹理的单成分和双成分的内部格式。
·转换反馈。
·顶点数组对象。
·sRGB帧缓冲区格式。
·废弃模式的深入讨论。
·修复错误并更新标记名。
对于OpenGL 3.1:
·标识出OpenGL 3.0中因废弃而要删除的功能。
新的功能:
·OpenGL着色语言更新,创建了GLSL 1.40版。
·实例化渲染。
·缓冲区之间高效的服务器端数据复制。
·在单个调用作用渲染多个类似的图元,用一个特殊标记(由用户指定)来表示何时重新启动一个图元。
·纹理缓冲区对象。
·纹理矩形。
·uniform缓冲区对象。
·带符号的规范化纹理单元格式。
《OpenGL编程指南(原书第7版)》假定读者知道如何使用C语言编写程序,并且了解一些数学背景知识(几何、三角、线性代数、积分和微分几何)。即使读者对计算机图形技术领域了解不多,仍然能够理解本书所讨论的绝大部分内容。当然,计算机图形学是一个巨大的主题,因此读者最好能够扩展自己在这个领域的知识。下面是我们推荐的两本参考书:
·《Computer Graphics: Principles and Practice》:作者James D.Foley、Andries van Dam、Steven K.Feiner和John F.Hughes(Addison-Wesley,1990)。该书是计算机图形学领域的百科全书,它包括了丰富的信息。但是,读者在阅读这本书之前最好已经对计算机图形学有一定程度的了解。
·《3D Computer Graphics》:作者Andrew S. Glassner(The Lyons Press,1994)。该书对计算机图形学进行了非技术性的、通俗易懂的介绍。这本书重点介绍计算机图形学可以实现的视觉效果,而不是实现这些效果所需要的技术。
另外,读者还可以访问OpenGL的官方网站。这个网站包含了各种类型的通用信息,包括软件、示例程序、文档、FAQ、讨论版和新闻等。
另外,OpenGL官方网站记录了组成OpenGL 3.0版和OpenGL 3.1版所有过程的完整文档。这些文档代替了OpenGL体系结构审核委员会和Addison Wesley出版的《OpenGL Reference Manual》(OpenGL参考手册)。
OpenGL实际上是一种独立于硬件的程序接口规范。在一种特定类型的硬件上,所使用的是它的一种特定实现。本书解释了如何使用所有的OpenGL实现进行编程。但是,由于各种OpenGL实现可能存在微小的差别(例如,在渲染性能以及提供额外的、可选的特性方面),因此读者可能需要寻找与自己所使用的特定OpenGL实现相关的补充文档。另外,读者所使用的系统还可能提供了与OpenGL相关的实用函数库、工具箱、编程和调试支持工具、各种窗口部件、示例程序和演示程序等。
《OpenGL编程指南(原书第7版)》包含了许多示例程序,以说明各种OpenGL编程技巧的具体用法。由于本书的读者背景各不相同,从新手到老手,既有计算机图形学的知识又有OpenGL的知识,本书中的示例通常都展示了一个特定渲染条件下的最简单的方法,并且使用OpenGL 3.0接口来说明。这么做的目的主要是为了让那些刚开始接触OpenGL的读者能够更直接和更容易地接受本书所介绍的内容。
在那里,你将会找到本书中所有示例的源代码,使用最新功能的实现,以及介绍从一个版本的OpenGL迁移到另一个版本所需的修改的额外讨论。
《OpenGL编程指南(原书第7版)》中包含的所有程序都使用了OpenGL Utility Toolkit (GLUT),其最初的作者是Mark Kilgard。对于这个版本,我们使用了开发freeglut项目的人们所编写的GLUT接口的开源版本。他们扩展了Mark最初的工作(那些工作在Mark Kilgard的《OpenGL Programming for the X Window System》Addison-Wesley,1996,一书中有详细的介绍)。
可以从这个站点获取它们的实现的代码和二进制文件。
《OpenGL编程指南(原书第7版)》1.6节和附录A给出了关于使用GLUT的更多信息。
许多OpenGL实现还可能包含一些示例代码,作为系统的一部分。这些源代码可能是这种OpenGL实现应该使用的最佳代码,因为它可能针对当前的系统进行了优化。读者可以参阅与自己使用的系统相关的OpenGL文档,了解从哪里下载这些示例程序。
Nate Robin编写了一套教学程序,用于演示OpenGL编程的基本概念。它允许用户修改函数的参数,以交互的方式观察它们的效果。这套教程所涵盖的主题包括变换、光照、雾和纹理。我们极力推荐使用这些教程。它们具有可移植性,并且使用了前面所提到的GLUT。
勘误表
《OpenGL编程指南(原书第7版)》使用如下的约定字体:
·粗体—表示命令和函数的名称和矩阵。
·斜体—变量、参数、参数名、空间维度、矩阵成员和第一次出现的关键术语。
·常规字体—每句类型和定义的常量。
代码示例以等宽字体显示,命令概览放在专门的框线中。
在命令概览部分,花括号表示可选的数据类型。在下面的例子中,glCommand具有4个可能的后缀:s、i、f和d,分别表示数据类型GLshort、GLint、GLfloat和GLdouble。在glCommand函数的原型中,TYPE表示这些后缀所提示的数据类型。
void glCommand{sifd}(TYPE x1, TYPE y1, TYPE x2, TYPE y2);
正如前面所提到的,本书的这一版本主要针对OpenGL 3.0和OpenGL 3.1。OpenGL 3.0对于目前可用的任何版本完全向后兼容。然而,OpenGL 3.1采用了废弃模式,删除了很多与现代图形系统不太兼容的旧功能。尽管很多功能从“核心的”OpenGL中删除了,为了消除版本之间的过渡,OpenGL ARB发布了GL_ARB_compatibility扩展。如果你的实现支持这个扩展,它将能够使用所有删除的功能。为了便于识别那些从OpenGL 3.1中删除了的、仍然得到兼容扩展支持的功能,在《OpenGL编程指南(原书第7版)》中,介绍命令或函数的边框的旁边会给出一个信息表格,其中列出受到影响的函数或符号。
尽管有些功能从OpenGL中废弃并删除了,但一些这样的功能影响着库,例如OpenGL Utility Library,通常称之为GLU。这些在OpenGL 3.1的变化中受到影响的函数,也会在旁边的表格中列出。
查看全部