前 言
OpenGL是一个图形硬件的软件接口(“GL”即Graphics Library)。这一接口包含了数百个函数,图形程序员可以利用这些函数指定设计高品质的三维彩色图像所需的对象和操作。这些函数中有许多实际上是其他函数的简单变形,因此,实际上它仅包含大约180个左右完全不同的函数。 OpenGL 实用库(OpenGL Utility Library,GLU)和对X窗口系统的OpenGL扩展(OpenGL Extension to the X Window System,GLX)为OpenGL提供了有用的支持特性和完整的OpenGL核心函数集。本书详细介绍了这些函数的功能。书中各章内容如下:
第1章 OpenGL简介
在概念上对OpenGL作了概述。它通过一个高层的模块图来阐述OpenGL所执行的所有主要处理阶段。
第2章 命令和例程概述
较详细地阐述了OpenGL对输入数据的处理过程(用顶点形式来指定一个几何体或用像素形式来定义一幅图像时),并告诉你如何用OpenGL函数来控制这个过程。此外,在本章中还对GLU和GLX函数作了讨论。
第3章 命令和例程一览
根据OpenGL命令所完成的功能列举说明了这些命令组。一旦了解了这些命令的功能,你就可以利用这些完整的函数原型作为快速参考。
第4章 定义的常量及相关命令
列举了在OpenGL中定义的常量和使用这些常量的命令。
第5章 OpenGL参考说明
本书的主体部分,它包括各组相关的OpenGL命令的描述。带参数的命令和与之一起描述的其他命令仅在数据类型方面有所不同。每个函数的参考说明介绍了参数、命令的作用和使用这些命令时可能发生的错误。
此外,本章还包含了有关OpenGL的 ARB扩展—多重纹理和绘图子集的参考说明。需要说明的是并非所有的OpenGL的环境都支持ARB扩展。
?第6章 GLU参考说明
本章包含了所有的GLU命令的参考说明。
?第7章 GLX参考说明
本章包含了所有的GLX命令的参考说明。
0.1 阅读此书前的预备知识
本书是OpenGL Architecture Review Board, Mason Woo、 Jackie Neider、Tom Davis 和Dave Shreinre编著的《OpenGL编程指南(第3版)》(Reading, MA: Addison-Wesley, 1999)的姊妹篇。阅读这两本书的前提是你已经懂得如何用C语言编程。
两本书的不同之处主要在于:《OpenGL编程指南》一书着重于介绍如何运用OpenGL,而本书的重点则是OpenGL的工作方式。当然要想彻底地了解OpenGL,这两方面的知识都是必需的。这两本书的另一个不同点是本书的大多数内容都是按字母次序编排的,这样编排的前提是假定你已经知道你所不明白的地方而仅仅想查找某个特定命令的用法。而《OpenGL编程指南》一书的编排则更像一本指南:它首先解释了OpenGL的简单概念,然后再导出更复杂的概念。虽然你不必通过阅读《OpenGL编程指南》一书来理解本书对命令的解释,但如果你已经读过它,你将会对这些命令有更深刻的理解。
如果你对计算机图形学还不太了解,那么请先从《OpenGL编程指南》一书入手学习,并同时参考下面这些书:
?James D. Foley、 Andries van Dam、Steven K. Feiner和John F. Hughes著,《计算机图形学:原理及应用》(Computer Graphics:Principles and Practice)。(Reading, MA:Addision-Wesley)。该书是一本计算机图形学的百科全书,它包含了丰富的信息量,但最好在你对这门学科有一定的实践经验之后再读它。ナAndrew S. Glassner 著,《3D计算机图形学:艺术家与设计师的用户指南》(3D Computer Graphics: A User誷 Guide for Artists and Designers)。(New York:Design Press)。这是一本非技术性的、综合介绍计算机图形学的书,它着重于所能获得的视觉效果而非如何获取这些效果的具体技巧。
ナOlin Lathrop著,《计算机图形学的工作原理》(The Way Computer Graphics Work)。(New York:John Wiley and Sons,Inc.)。这本书概括性地介绍了计算机图形学,主要面向初级和中级计算机用户。它介绍了理解计算机图形学所必需的一般概念。
0.2 字体约定
本书使用如下的字体约定:
黑体字(Bold)—命令和例行程序名;
斜体字(Italics)—变量名、自变量名、参数名、空间维数和文件名;
正体字(Regular)—枚举类型和定义的常量;
等宽字体(Monospace font)—示例代码。
值得注意的是本书所使用的命令名称都是缩写形式。许多OpenGL命令只是其他命令的变种。简言之,这里只使用函数的基本名称。如果此命令上加有星号(*),则说明它所代表的实际的命令名称可能比显示的命令名称要多。如,glVertex*代表所有指定顶点的命令变种所构成的命令。
多数命令的区别仅在于它们所带的自变量的数据类型。有些命令则在相关自变量的数目、这些自变量是否被指定为向量以及是否需在列表中单独指定等方面存在着区别。例如,你使用glVertex2f命令时必须以浮点数形式提供x和y的坐标;而使用glVertex3sv 命令时你需为x,y,z提供一个包含三个短整型值的数组。
0.3 致谢
本手册的初版是许多人共同努力的结果。Silicon Graphics的Kurt Akeley,SABL Productions的Sally Browning以及Silicon Graphics的Kevin P. Smith为第1版提供了大量的资料,另外还有Jackie Neider和Mark Segal(他们均来自Silicon Graphics)。Mark和Kurt合著《The OpenGL Graphics System:A Specification》,Kevin著《OpenGL Graphics System Utility Library》,Phil Karlton 著《OpenGL Graphics with the X Window System》为本书作者提供了文献来源。Phil Karlton和Kipp Hickman帮助在Silicon Graphics定义并创建了OpenGL,此外还有Gain Technology, Inc.的Raymond Drewry、Digital Equipment Corp.的Fred Fisher、Kubota Pacific Computer, Inc.的Randi Rost等人也为本书的编写提供了帮助。OpenGL 结构评审委员会的成员Murray Cantor以及International Business Machines的Linas Vepstas、Digital Equipment Corporation的Paula Womack和Jeff Lane、Intel的Murali Sundaresan,还有Microsoft的Chuck Whitmer也提供了很多帮助。Thad Beier同Seth Katz以及Silicon Graphics的Inventor小组一起制作了封面图形。Silicon Graphics的Kay Maitz、Evans Technical Communications的Arthur Evans以及Susan Blau提供了产品援助,Tanya Kucak对本手册进行了编辑。当然,如果没有OpenGL,也就不会有本书的存在,所以要感谢Silicon Graphics的OpenGL小组所有成员,感谢他们的辛勤工作。他们是:Momi Akeley、Allen Akin、Chris Frazier、Bill Glazier、Paul Ho、Simon Hui、Lesley Kalmin、Pierre Tardif、Jim Winget,尤其是Wei Yen。另外,还有上面提到的Kurt、Phil、Mark、Kipp以及Kevin。当然还有许多其他的Slicon Graphics成员也为改进OpenGL的定义和功能做出了很多贡献,在这里也一并感谢他们。 Kempf的Renate Kempf及其同事、Silicon Graphics的Chris Frazier为《OpenGL Reference Manual for OpenGL, Version1.1》添加了所有OpenGL1.1 Specification中的新功能,并编辑审查了其他所有参考说明书。下列人员对该书进行了仔细的复审,他们是Allen Akin、David Blythe、Craig Dunwoody、Chris Frazier以及Slicon Graphics的Paula Womack、OpenGL 结构评审委员会中的成员,包括Silicon Graphics的Kurt Akeley、HP的Dave Arns、E&S的Bill Armstrong、Intergraph的Dale Kirkland和IBM的Bimal Poddar。Silicon Graphics的Simon Hui复审了GLX参考说明,John Spitzer复审了已校对的图形插页。
在本书中,SGI的Dave Shreiner添加了OpenGL 1.2和GLX 1.3的大部分新的功能,并在David Yu的帮助下重新修订了图面。Norman Chin重新修订了GLU 1.3的参考说明。下列人员认真地进行了手册复审这一艰巨的工作,他们是:Ron Bielaski、Steve Cunningham、Jeffery Galinovsky、Eric Haines、Mark Kilgard、Dale Kirkland、Seth Livingston、Bimal Poddar、David Nishimoto、Mike Schmitt、Scott Thompson、David Yu以及SGI的OpenGL小组的成员Craig Dunwoody、Jaya Kanajan、George Kyraizis、Jon Leech和Ken Nicholson。
这本书最让我印象深刻的是它对于“精确性”的执着追求。在讨论诸如精度损失、数值稳定性、以及不同版本规范间的细微差别时,作者从不含糊其辞。它提供了一种近乎学术论文般的严谨性,使得我们引用的任何一个常量定义或函数行为,都有据可查,其背后的数学依据也得到了充分的阐释。这种对细节的极致关注,对于从事高精度模拟、科学可视化或图形计算密集型应用的开发者来说,是保证最终产品可靠性的基石。我发现,每当我遇到一个难以复现的渲染错误,回溯到书中对特定算法或数学模型的描述时,往往能找到问题的症结所在——通常是由于我对某个边界条件或浮点数处理的假设出现了偏差。总而言之,它不是一本教你如何快速出成果的书,而是一本教你如何建立坚不可摧的技术自信的书。它塑造的是一种对待图形编程的审慎态度和深层理解,而不是一时的代码片段的堆砌。
评分我曾尝试将这本书用作课堂教材的辅助读物,但很快发现,它更适合作为一名专业人士的案头工具书。它的编排风格偏向于参考手册的严谨性,章节之间关联性强,但独立性相对较弱,你需要对前文的概念有扎实的掌握,才能无碍地阅读后续章节中关于高级特性的论述。特别是在深入探讨内存布局和同步机制的那一部分,其对硬件特性的抽象和提炼,展现了作者深厚的行业洞察力。书中对不同平台间的差异性描述虽然精炼,却一针见血,点明了跨平台开发中必须注意的陷阱。不过,这种高度的专业性也意味着它在易读性上做出了牺牲。字体排版和图表的简洁风格,虽然保证了信息的高效传递,但对于需要通过大量直观案例来学习的读者来说,会感到有些枯燥和难以亲近。它要求读者带着明确的问题去查阅,而不是作为一本可以轻松从头读到尾的小说。
评分坦率地说,这本书的阅读体验更像是在攀登一座技术高峰,而非在平坦的田野上漫步。它的文字密度极高,每一个句子似乎都承载了丰富的技术信息量。我尤其欣赏作者在处理兼容性和历史沿革方面的态度。在讲解一些过时的功能或已被弃用的方法时,作者并未简单地删除,而是提供了深入的分析,解释了它们被取代的原因以及在新标准下如何实现等效功能。这种对历史脉络的尊重和清晰的演进描述,对于那些需要维护遗留代码库或对图形API发展史感兴趣的资深工程师来说,简直是无价之宝。然而,对于刚接触实时渲染领域的“菜鸟”而言,这无疑是一道陡峭的门槛。书中对性能优化策略的探讨,往往是直接给出结论和应用场景,缺乏那种手把手带着计算性能瓶颈的教学过程。它要求读者具备一定的数学直觉和一定的编程经验作为跳板,才能真正领会其中关于矩阵变换和光照模型的精髓。它提供的是“是什么”和“为什么”,而“如何一步步做到最优解”则需要读者自行在实践中探索和验证。
评分这本关于图形编程的巨著,篇幅之宏大,内容之详实,实在令人叹为观止。我翻开它时,首先被其系统性的结构所吸引。它并非简单地罗列API函数,而是构建了一个从底层概念到高级渲染管线应用的完整知识体系。初学者可能会被其中大量的术语和复杂的数学公式所震慑,但只要沉下心来,就会发现作者在每一个章节的衔接处都做了极为精妙的铺垫。特别是关于状态管理和资源上传的部分,讲解得如同庖丁解牛般清晰,将以往模糊不清的流程描绘得井井有条。书中的图示,虽然没有直接展示具体的代码实现,却以一种抽象而精准的方式,勾勒出了数据如何在GPU和CPU之间流动、变换的路径。这对于理解现代GPU架构的并行处理特性至关重要。它更像是一份详尽的“施工蓝图”,而非简单的“操作说明书”,让你在构建复杂场景时,能够追溯到每一个像素点或每一个顶点背后的驱动逻辑。阅读过程中,我时常需要对照着其他辅助资料,但这本身也印证了此书作为核心参考资料的地位——它提供了最坚实的基础理论框架,等待读者去填充具体的实践细节。那种将整个渲染流程了然于胸的成就感,是其他零散教程难以比拟的。
评分这本书在概念的抽象层面上达到了一个极高的境界,它似乎旨在培养读者的“架构思维”,而非仅仅是“API调用能力”。我发现它在描述渲染管线的各个阶段时,采用了一种近乎于哲学思辨的方式来界定不同阶段的职责和输入输出约束。例如,关于几何处理阶段与片段处理阶段之间数据流转的描述,异常精妙,它成功地将“面向对象”的设计思想融入到固定功能管线的理解中。书中反复强调的“状态机”模型,帮助我彻底理解了为何某些操作必须在特定的时间点才能执行。如果说市面上的许多资料是在教你如何使用工具,那么这本书更像是在教你如何“设计”和“理解”这个工具本身的设计哲学。虽然书中可能没有直接给出“如何在五分钟内实现一个动态阴影”的快速解决方案,但一旦你完全掌握了它所阐述的底层逻辑,任何复杂的现代着色器技术,如延迟渲染或体积光照,都将不再是遥不可及的黑魔法,而是逻辑自洽的工程实现。它培养的是一种“举一反三”的内功。
评分曾经的记忆
评分我想起来了,曾经这么迷恋计算机技术,那时的尖端 可现在的使用者太~该为时代进步高兴了,总是有些失落啊 相对DirectX我更喜欢OpenGL
评分曾经的记忆
评分曾经的记忆
评分我想起来了,曾经这么迷恋计算机技术,那时的尖端 可现在的使用者太~该为时代进步高兴了,总是有些失落啊 相对DirectX我更喜欢OpenGL
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2026 book.wenda123.org All Rights Reserved. 图书目录大全 版权所有