基本信息
- 原书名:OpenGL(R) SuperBible: Comprehensive Tutorial and Reference (4th Edition)
- 原出版社: Addison-Wesley Professional
- 作者: (美)Richard S. Wright Benjamin Lipchak Nicholas Haemel
- 译者: 张琪 付飞
- 出版社:人民邮电出版社
- ISBN:9787115235848
- 上架时间:2010-9-9
- 出版日期:2010 年9月
- 开本:16开
- 页码:718
- 版次:4-1
- 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计
计算机 > 图形图像、多媒体、网页制作 > OpenGL
【插图】

编辑推荐
本书开篇详细讲解OpenGL图形编程的核心技术,覆盖了从空间中进行绘制到几何变换,从光照到纹理贴图等内容。书中讲解了新的OpenGL功能,包括OpenGL 2.1的强大可编程管线、定点和片段着色和高级缓冲区。书中还包含了对多种平台上的OpenGL实现的最新介绍,这些平台包括Windows、Mac OS X、Linux和嵌入式系统。
内容简介
计算机书籍
本书是OpenGL及3D图形编程最好的入门指南,涵盖了使用最新版本的OpenGL进行编程所需要的主要知识。[BR>全书分3个部分,共22章,另有3个附录。第一部分包括第1章到第14章,介绍如何构建一个使用OpenGL的程序,如何设置3D渲染环境,以及如何创建基本对象和光线并对他们进行着色。然后,深入研究使用OpenGL和它的一些高级特性及不同的特殊效果。第二部分包括第15章到第18章,分别介绍了OpenGL中支持可编程硬件[特别是在OpenGL着色语言(GLSL)中]的新特性。第三部分是第19章到第22章,着重介绍OpenGL是如何支持和连接Windows、Mac OS X、Linux和掌上设备。附录部分给出了更多阅读建议、术语表和API参考介绍。[BR>本书适合希望精通OpenGL以便对他们的图形编程和3D图形知识进行扩展的程序员阅读,也可以帮助那些经验丰富的OpenGL程序员学习如何移植自己的应用程序。本书既可以作为学习OpenGL的教材,也可以作为随时查阅的参考手册。
作译者
Benjamin Lipchak,管理着AMD的一个OpenGL ES驱动小组。他原来领导着Khronos生态技术小组,建立了OpenGL SDK并创建了OpenGL管线时事通信。
Nicholas Haemel,AMD Graphics Products Group(图形产品开发小组)的一位开发者,也是本书第3版的技术审稿人;参与了本书的GLX和OpenGL ES部分的写作。
目录
前言
无论读者是在Windows、Mac OS X、Linux还是在手特游戏设备上进行编程,本书都是开始学习OpenGL,以及在读者特定平台上最大程度利用它的好工具。本书中的主体是以GLUT或FreeGLUT工具箱为宿主的高度便携式C++代码。读者还可以在本书中看到特定操作系统的章节,这些章节展示了如何将OpenGL写入我们的本地窗口系统。在本书中,我[门自始至终努力不去假设读者有多少3D图形编程主题预备知识。这样就促成了这本入门的程序员和经验丰富的程序员刑台学习OpenGL进都能接受的教程。
第4版有哪些更新
本书前几版的读者可能会立刻注意到,参考资料被重新整理了。现在我们不再试图将独立的函数与使用它们的章节放在一起,而是添加了附录C,其中包含了GL函数的完整OpenGL API参考。这对这些资料来说是更加恰当和有用的组织结构。现在这些参考页也是基于官方OpenGL手册页的,也就是说不再会有任何不完整或遗漏的函数调用了。详细的函数入口也将更加简洁完整。
本版的Mac OS X和Linux章节被彻底重写了。有时候只进行修订是不够的,最好的方式就是从头开始。我们认为读者将会喜欢这些重写的章节,这些章节对于任何需要关于开始使用OpenGL和在他们的特定平台上运行的指南的读者来说都非常有用。同时,在关于平台的主题中,Windows相关章节也进行了更新,并删除了一些过时和陈旧的主题。众所周知,关于OpenGL在Windows Vista中将被终结的广泛谣传实际上并没有发生。
我们还加入了全新的两章。在这个版本中,CAf门将带领读者对最新的OpenGL ES规范进行全面的了解。我们还提供了一章激动人心的内容,专门讲解高级OpenGL缓冲区使用,包括离屏渲染、浮点缓冲区和纹理,以及像素缓冲区对象。所有这些章节的内容S咆括了OpenGL 2.1的功能,并且更多地关注当前的OpenGL编程技术(举例来说,第11章涉及几伺操作,这—章就针对这个目的进行了重大的修改)。
本书的组织结构
本书共分为三部分,即旧约、新约和新约外传。每一部分都涵盖了OpenGL的特性——也就是固定管线(即传统内容)、可编程硬件,以及最后的一些平台相关绑定。我们当然不会把我们微不足道的工作与任何人的神圣的文字相提并论。不过,见多识广的读者一定会看到这种比喻是多么贴切合适。
第一部分 “旧约”——经典属性
在这一部分中,读者将学到如何构建一个使用OpenGL的程序,如何设置3D渲染环境,以及如何创建基本对象和光线并对他们进行着色。然后,我们将深入研究使用OpenGL和它的一些高级特性及不同的特殊效果。这些章节是读者认识使用OpenGL进行3D图形编程的很好的方式,并提供了关于本书后面将讲到的更多高级功能的基础。
第1章 3D图形和OpenGL的介绍 本章针对3D图形新手,介绍了基础概念和一些通用词汇。
第2章 使用OpenGL 在本章中,我们向读者提供了关于OpenGL是什么、它从何而来以及将如何发展的应用知识。读者将编写自己的第一个使用OpenGL的程序,找出需要使用哪些头和库,学习如何设置环境,并发现一些通用约定如何帮助我们记住OpenGL函数调用。我们还会介绍OpenGL状态机和错误处理机制。
第3章 空间绘图:几何图元和缓冲区 在本章中,我们展示了3D图形编程的建筑块。读者可以大致明白如何让计算机来用OpenGL创建一个三维对象。读者也可以学到消除隐藏表面和使用模板缓冲区的方法。
第4章 几何变换:管线 现在我们在虚拟世界中创建三维形状,如何使它信移动?如何使自己移动?这些都是在这一章中将学习的。
第5章 颜色、材料和光照:基础知识 在本章中,我们将获得三维“轮廓”并赋予它们颜色。我们将学习如何在图形上应用素材效果和光线来使它们显得更真实。
第6章 颜色和材料的更多细节 现在我们该学习混合对象和背景来生成透明(可以看透)的对象了。我们还可以学到一些使用雾化和累积缓冲区的特殊效果。
第7章 OpenGL中的图侮 这一章都是关于在OpenGL中操作图像数据的。这些信息包括读取一个TGA文件并将它显示到一个OpenGL窗口。我们还可以学到一些强大的OpenGL图像处理功能。
第8章 纹理贴图:基础知识 纹理贴图在任何3D图形工具箱中都是最有用的特性之一。我们将学到如何将图像缠绕到多边形上,以及如何立即载入和形成多纹理。
第9章 纹理贴图:高级知识 在本章中,我们将学习如何自动生成纹理坐标,如何使用高级过滤模式,以及如何使用纹理压缩的内建硬件支持。我们还可以学习到OpenGL对于点精灵的支持。
第10章 曲线和表面 简单的三角形是一种强大的建筑块。本章我们将了解一些操作这些三角形的工具。我们将学到一些OpenGL的内建二次曲面表面生成函数,以及使用自动镶嵌来将复杂的形状分解成更小、更容易处理的小块的方法。我们还会探究贝塞尔和NURBS(非均匀有理B样条)曲线和表面的效用函数。我们可以使用这些函数来用极少的代码创建复杂的形状。
序言
我猜我只是比较幸运。
还有一些其他的小错误,这些错误使我碰巧避免了在一些将要倒闭的公司出头,不过接下来我所做的真正笨拙的重要决定就是写这本书的第一版。那时我已经从解决SQL数据库问题中建立了一个很不错的职业生涯,并且正在向医疗保健产业的大规模企业1T解决方案转变。写一本关于OpenGL的书?我都快不知道自己在干什么了。在我第一次阅读OpenGL官方规范时,我就差没有对着纸袋呼吸(一种缓解紧张情绪的方法)了,而我的第一任合著者则因为无法忍受而退出了,这本书在完成一半以前也差点就被取消了。
这本书刚一出版,就出现了一件让我难以置信的事。Lockheed-Martin公司的Real3D子公司给了我一个做“真实”OpenGL工作的职位。我当时的老板(保佑你,David,不管你在哪里!)竭力试图说服我放弃当时的职业生涯。大家都知道,他坚持无论Microsoft做什么都会成为产业发展的方向,而Microsoft的Talisman图形平台将要埋葬OpenGL。此外,当时关于OpenGL的其他图书只有一本,它能有多大的发展呢?
11年过去了,我已经写完了这本书的第4版(并且关于OpenGL的图书比比皆是),还记得Talisman短命的大肆宣传的读者可能很少了,估计我的小型货车就能装得下。我在IBM认识的一位OpenGL工程师在她的E-mail签名中写道: “OpenGL无处不在。想想看吧。”这在今天再真实不过了。
现在,OpenGL已经是几乎所有可能平台上的行业领先的标准图形APl了。这些平台不仅包括桌面Windows PC和Mac,也包括UNIX工作站、基于位置的娱乐系统、大型游戏机(只有一个例外)、手持式游戏设备、蜂窝电话和无数其他嵌入式系统,例如航空电子和汽车设备。
在各种平台上,OpenGL在3D内容创建应用程序、游戏、可视化、仿真、科学建模,甚至2D图像和音频编辑中的霸主地位毋庸置疑。OpenGL的广泛成功可以归功于它的简洁和使用简单,它的能力和灵活性,以及开发者和IHV(独立硬件供应商)们对它的强大支持。OpenGL还可以进行扩展,以便在赋予厂商向实现添加它们自己的附加价值的同时,提供一个开放标准的所有优势。
我们可能听说过,可编程硬件是3D图形编程和图形APl的未来发展趋势。可编程硬件已经不再是未来的事了,它就在现在,今天,甚至在最廉价主板的嵌入式3D芯片集中。在本系列书中,这一版与上一版的时间间隔最短并不是偶然的。图形技术的更新之快令人惊讶,而本版则向读者展示了目前最新的OpenGL版本。
我们增补了固定管线编程的内容,这部分内容在近期不会有大的改变,我们亲切地称它们为“旧约”。这些内容仍然是有关系、具有说明性的,并且是可编程硬件的“新约”部分的基础。我找到了非常恰当的类比,我会对那些认为固定管线已经完全没用、没关系的人进行反驳。我确信,广大普通的应用程序开发者(不必是cutting-edge技术游戏开发者)者哙同意。
这就是说,我们仍然要平衡一些内容上的负担。颜色索引模式已经被尽可能地忽略了,Windows部分中一些旧的调板渲染素材也已被删除,并且删除了所有低级的汇编类型渲染素材,以便为更新和扩展高级渲染语言(GLSL)的内容节省空间。我们还可以看到关于掌上系统上的OpenGL的全新章节,彻底重写的Mac OS X和Linux部分,以及关于诸如离屏渲染和浮点纹理等高级缓;中区技术的非常棒的新内容。
某些读者还可以发现,本书的另外一项重大改变是被加入了Addison-Wesley的OpenGL系列。我已无法表达我的感激和自豪。我本人已翻烂了这个系列中每一本书至少一个版本的封面。
本书能有如此长的生命期,我想其中一个原因是与众多OpenGL书籍不同的独特写法。我总是尽量以一个为3D图形而兴奋但对书中主题知之甚少的读者的视角来进行写作。一本指南的目的就是帮助读者上手,而不是教会读者所有需要知道的东西。每位专业人士都知道,我们也不可能做到这一点。有时也确实有人批评我掩盖了太多东西,或者没有根据精确的工程精度来进行解释。不过这类批评几乎都不是来自这本书的目标读者。我们希望本书读者中的绝大多数都把本书作为学习OpenGL和3D图形的第一本书。我们也希望没有人把它当做最后一本。
好了,我确实为我的职业生涯做出了一次“聪明”的决定。在20世纪80年代早期,我还是一个在电子产品商店注视一合计算机的学生。售货员走过来停下了。我告诉他,我刚刚开始学习编程,正在考虑一台比他的型号更先进的Amiga牌计算机。他强烈建议我认真地考虑一台其他人都在使用的计算机。他告诉我,一台Amiga除了能“做好看的图片”之外没什么优势。他向我保证,没人能靠用他的计算机来做好看的图片谋生。遗憾的是,我听从了这个“聪明”的建议并在之后的十多年时间里为此懊悔不已。所幸我终于变得“笨拙”了。
至于靠“做好看的图片”谋生?想想看吧。
哦,我最近的一次“笨拙”的决定?我离开了Windows并转向了Mac。时间将证明我是不是还一如既往地幸运。
——Richard S.Wright,Jr.