交互式计算机图形学--基于OpenGL的自顶向下方法(第五版)
基本信息
- 原书名: Interactive Computer Graphics: A Top-Down Approach Using OpenGL (5th Edition)
- 原出版社: Addison Wesley
- 作者: (美)Edward Angel [作译者介绍]
- 译者: 张荣华 姜小磊 宋雨
- 丛书名: 国外计算机科学教材系列
- 出版社:电子工业出版社
- ISBN:9787121088698
- 上架时间:2009-7-3
- 出版日期:2009 年7月
- 开本:16开
- 页码:601
- 版次:5-1
- 所属分类:
计算机 > 计算机科学理论与基础知识 > 图形学
教材 > 计算机教材 > 本科/研究生 > 公共课及公共选修课
内容简介回到顶部↑
在广泛结合opengl并注重图形应用编程的基础上,本书向读者介绍了计算机图形学的核心概念。书中代码采用c和c++语言,并使用了自顶向下和面向编程的方法,使读者能够迅速地创建自己的三维图形。在结构安排上,本书在读者学会了编写交互式图形程序之后再介绍底层的算法,如线段的绘制以及多边形填充等算法。.
本书覆盖了计算机图形学基础课程中的所有主题,包括光与材质的相互惟用、明暗绘制、建模、曲线和曲面、反走样、光栅化、纹理映射和图像合成等内容。..
本书可作为计算机及相关专业本科生和研究生的计算机图形学教材,也适合作为相关程序员、工程技术人员及科研人员的参考书。...
本书覆盖了计算机图形学基础课程中的所有主题,包括光与材质的相互惟用、明暗绘制、建模、曲线和曲面、反走样、光栅化、纹理映射和图像合成等内容。..
本书可作为计算机及相关专业本科生和研究生的计算机图形学教材,也适合作为相关程序员、工程技术人员及科研人员的参考书。...
作译者回到顶部↑
本书提供作译者介绍
Edward Angel美国新墨西哥大学计算机科学系、电气与计算机工程系以及媒体艺术系荣誉退休教授,他曾经是该大学首位兼任教学工作的研究生。Edward获得了美国南加州大学哲学博士学位和加州理工学院工程理学学士学位。他还是新墨西哥大学艺术、研究、技术和科学实验室(http://artslab.unm.edu)的主任。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第1章 图形系统和模型.
1.1 计算机图形学的应用
1.2 图形系统
1.3 图像:物理的和合成的
1.4 成像系统
1.5 虚拟照相机模型
1.6 程序员接口
1.7 图形绘制系统的体系结构
1.8 可编程流水线
1.9 性能特征
小结和注释
建议阅读资料
习题
第2章 图形学编程
2.1 sierpinsh镂垫
2.2 编写二维图形应用程序
2.3 openglapi
2.4 图元和属性
2.5 颜色
2.6 观察
1.1 计算机图形学的应用
1.2 图形系统
1.3 图像:物理的和合成的
1.4 成像系统
1.5 虚拟照相机模型
1.6 程序员接口
1.7 图形绘制系统的体系结构
1.8 可编程流水线
1.9 性能特征
小结和注释
建议阅读资料
习题
第2章 图形学编程
2.1 sierpinsh镂垫
2.2 编写二维图形应用程序
2.3 openglapi
2.4 图元和属性
2.5 颜色
2.6 观察
译者序回到顶部↑
实施和推进“双语教学”是我国高等教育适应国际化的趋势,为了培养富有创新精神和国际视野的复合型高素质人才,译者所在学校的计算机系从2005年开始对《计算机图形学》课程开展了双语教学工作。译者多年从事计算机图形学的教学与研究,深知选择一本“基础性与先进性、理论性与应用性、科学性与通俗性”相结合的优秀教材的重要性。为了保证双语教学的顺利实施,经过认真筛选,我们最终选择并沿用了教育部高等教育司推荐的国外高质量的外文原版影印教材Interactive Computer Graphics-A Top-Down Approach with OpenGL,本书一版再版,先后由高等教育出版社、清华大学出版社及电子工业出版社出版。.
本书原版是国外诸多大学采用的一本经典计算机图形学教材。为了满足国内高校对高质量计算机图形学教材的需求,电子工业出版社希望将本书的最新版本(第五版)翻译成中文出版,译者甚感荣幸承接了本书第五版的翻译工作。本书的整个翻译过程持续了半年多,为了确保译文的质量,译者和校对人员花了大量时间对译文进行认真的校对和统稿。在翻译的过程中,对于原文可能有误的地方,译文中均以“泽者注”的形式做了统一标注。
本书的主要特色如下:
·内容丰富而系统,基础性内容和拓展性主题相结合。本书涉及了现代计算机图形学课程几乎所有的主要内容,包括基于OpenGL的交互式图形编程、基于图形绘制流水线的各种几何变换操作和基本算法、光与材质的相互作用、可编程着色器、层级建模、过程建模、曲线和曲面、反走样、纹理映射、图像合成和高级绘制等内容。
·内容编排和组织独具特色,综合了知识性和实用性。本书采用了“白顶向下”和面向图形应用编程的方法,使学生既能基于OpenGL迅速地编写自己的三维图形程序,又能系统地掌握计算机图形学的基本原理、方法和高级技术。
·本书作者是新墨西哥州大学计算机科学系、电气与计算机工程系,以及媒体艺术系的荣誉退休教授,作者结合自己在计算机图形学领域多年的科研和教学工作,在书中提供了大量的经典示例(包括附录A中提供的19个完整的示例程序)、插图和习题,并在每章后面提供了非常难得的建议阅读资料,以便读者能全面且深入地理解计算机图形学的基本理论和方法。..
·本书既不乏经典理论,又侧重近几年计算机图形学发展的最新成果。为了及时反映计算机图形学目前的发展现状,本书对第四版中某些章节提及的某些反映图形硬件性能的数据做了修改,并调整和增删了某些内容:
·把第四版的“建模”一章划分为“层级建模”和“过程建模”两个独立的章,扩充并完善了层级建模和过程建模的相关内容。例如,在层级建模中增加了开放场景图(OSG)和实时绘制(如遮挡剔除和LOD)等内容,而在过程建模中增加了一个简单而完整的粒子系统示例程序,并增加了基于语言的建模和过程噪声等内容。
·扩充并调整了可编程着色器的内容,从而使该章的层次更加清晰,读者也更容易理解OpenGL着色语言(GLSL)及其执行过程。扩充并调整后的内容反映了最新可编程图形硬件GPU的发展现状,例如在第9章的小结与注释中提到了最新可编程GPU内部的一个称为“几何着色器”(geometry shader)的可编程处理单元。
·重新修订了书中有关的示例程序以及附录A中的完整示例程序。例如,把第四版第3章(输入与交互)中的“一个简单的画图程序”修改为“一个简单的CAD程序”;在附录A中增加了一个完整的粒子模拟程序。
翻译国外的著作是一个再创作过程,本书的翻译过程得到了很多人的帮助和参与,没有他们为此付出的辛劳,就不会在如此短的时间内顺利地完成本书的翻译,在此衷心感谢为本书翻译付出努力的每一个人!除了本人之外,姜小磊、宋雨、李继荣也参与了本书的翻译工作,另外,刘书刚、宋亚奇、李莉、张长明、崔克彬、王蓝婧、阎蕾、王艳、郭军、祁在山、刘晓峰和潘德锋等老师参与了本书的校对工作。
由于译者自身知识的局限性和精力有限,译文难免有错漏之处,谨向原书作者和读者表示歉意,并欢迎读者批评指正。...
华北电力大学计算机系
张荣华
2008年12月于保定
本书原版是国外诸多大学采用的一本经典计算机图形学教材。为了满足国内高校对高质量计算机图形学教材的需求,电子工业出版社希望将本书的最新版本(第五版)翻译成中文出版,译者甚感荣幸承接了本书第五版的翻译工作。本书的整个翻译过程持续了半年多,为了确保译文的质量,译者和校对人员花了大量时间对译文进行认真的校对和统稿。在翻译的过程中,对于原文可能有误的地方,译文中均以“泽者注”的形式做了统一标注。
本书的主要特色如下:
·内容丰富而系统,基础性内容和拓展性主题相结合。本书涉及了现代计算机图形学课程几乎所有的主要内容,包括基于OpenGL的交互式图形编程、基于图形绘制流水线的各种几何变换操作和基本算法、光与材质的相互作用、可编程着色器、层级建模、过程建模、曲线和曲面、反走样、纹理映射、图像合成和高级绘制等内容。
·内容编排和组织独具特色,综合了知识性和实用性。本书采用了“白顶向下”和面向图形应用编程的方法,使学生既能基于OpenGL迅速地编写自己的三维图形程序,又能系统地掌握计算机图形学的基本原理、方法和高级技术。
·本书作者是新墨西哥州大学计算机科学系、电气与计算机工程系,以及媒体艺术系的荣誉退休教授,作者结合自己在计算机图形学领域多年的科研和教学工作,在书中提供了大量的经典示例(包括附录A中提供的19个完整的示例程序)、插图和习题,并在每章后面提供了非常难得的建议阅读资料,以便读者能全面且深入地理解计算机图形学的基本理论和方法。..
·本书既不乏经典理论,又侧重近几年计算机图形学发展的最新成果。为了及时反映计算机图形学目前的发展现状,本书对第四版中某些章节提及的某些反映图形硬件性能的数据做了修改,并调整和增删了某些内容:
·把第四版的“建模”一章划分为“层级建模”和“过程建模”两个独立的章,扩充并完善了层级建模和过程建模的相关内容。例如,在层级建模中增加了开放场景图(OSG)和实时绘制(如遮挡剔除和LOD)等内容,而在过程建模中增加了一个简单而完整的粒子系统示例程序,并增加了基于语言的建模和过程噪声等内容。
·扩充并调整了可编程着色器的内容,从而使该章的层次更加清晰,读者也更容易理解OpenGL着色语言(GLSL)及其执行过程。扩充并调整后的内容反映了最新可编程图形硬件GPU的发展现状,例如在第9章的小结与注释中提到了最新可编程GPU内部的一个称为“几何着色器”(geometry shader)的可编程处理单元。
·重新修订了书中有关的示例程序以及附录A中的完整示例程序。例如,把第四版第3章(输入与交互)中的“一个简单的画图程序”修改为“一个简单的CAD程序”;在附录A中增加了一个完整的粒子模拟程序。
翻译国外的著作是一个再创作过程,本书的翻译过程得到了很多人的帮助和参与,没有他们为此付出的辛劳,就不会在如此短的时间内顺利地完成本书的翻译,在此衷心感谢为本书翻译付出努力的每一个人!除了本人之外,姜小磊、宋雨、李继荣也参与了本书的翻译工作,另外,刘书刚、宋亚奇、李莉、张长明、崔克彬、王蓝婧、阎蕾、王艳、郭军、祁在山、刘晓峰和潘德锋等老师参与了本书的校对工作。
由于译者自身知识的局限性和精力有限,译文难免有错漏之处,谨向原书作者和读者表示歉意,并欢迎读者批评指正。...
华北电力大学计算机系
张荣华
2008年12月于保定
前言回到顶部↑
本书是计算机图形学入门教材,重点介绍应用程序的编写。在1997年出版本书第一版之前我曾写过一本图形学的教材,这两本书相隔了7年,在此期间,计算机图形学有了巨大的发展,发展速度之快超出大多数人的预期,也包括我自己。从那以后到现在的11年里(本书出到了第四版),我们看到计算机图形学发生了更多的变化,长篇计算机动画电影在商业和艺术两方面都获得了成功,在电影中使用计算机效果已经成为标准,实景拍摄和计算机合成效果常常很难区分。现在从硬件上已难以区分计算机和游戏电玩(gamebox),可编程图形处理器在商品系统中提供了相当的灵活性,而在几年前即使是最昂贵的工作站也不可能达到这种层次。.
现在,不但图形系统的功能大为增强,而且从高端到低端工作站的价格也大幅下降。最近几年,图形系统每秒钟能够绘制超过1亿个具有光照效果和经过纹理映射的三维多边形,价格已经从超过10万美元下降到不足1000美元。用于个人计算机的商用图形板的出现具有特别重要的意义,这些图形板支持复杂的三维应用程序,最低价格大约为100美元。在软件方面,OpenGL仍旧是编写应用程序和为多平台应用开发高级产品的标准程序员接口,OpenGL支持从大型科学计算可视化到手机游戏的广阔应用领域。
自顶向下的方法
图形学的新进展和本书前4版的成功使我一直坚持采用一种自顶向下的、面向编程的方法来介绍计算机图形学的基本知识。虽然现在许多院校的计算机科学和工程系在图形学方面开设了多门课程,但是多数学生只选修其中的一门课程。学生们在已经学习了程序设计、数据结构、算法、软件工程和基础数学以后,给他们安排一门计算机图形学课程,将允许教师以内容充实并且有趣的方式按上述已学课程来组织课程内容,我想学生们会尽可能地编写出三维应用程序。底层的算法,例如绘制线段或者填充多边形,可以在学生们编写了图形程序之后再考虑。
计算机教育的先驱JohnKemeny曾经把自顶向下的编程方法与我们熟悉的汽车来类比:你没必要知道汽车罩下面是什么,但是如果知道内部的工作原理,你就会去驾驶汽车而不是坐在汽车后座上。同样的类比适用于讲授计算机图形学的方法。第一种方法(算法的方法)是把汽车工作原理的方方面面都交代清楚:发动机、传动装置、燃烧过程等。第二种方法(概览的方法)是雇一名司机,自己坐在后面观光。第三种方法(本书采用的编程方法)是教会你如何驾驶并把车开到想要去的地方,正如一句过时的汽车租赁广告词所说的那样:“让我们把你放到驾驶员的位子上去。”
使用OponGL和C语言编程
25年前我开始讲授计算机图形学,当时以面向编程的方式讲授这门课程并编写出教材的最大障碍是缺乏一个广泛接受的图形库或者应用程序接口(API)。遇到的困难包括:高成本、可用性受限、缺乏通用性以及高复杂性。开发OpenGL解决了我们中很多人在其他API(例如GKS和PHIGS)中遇到的大多数困难以及在使用自己编写的软件作为替代时所面临的大多数困难,今天所有的平台都支持OpenGL,它已和Microsoft Windows以及Apple Macintosh操作系统集成在一起,实际上所有的图形卡都有驱动程序。在大多数Linux分布式系统中也都包含一个称为Mesa的OpenGLAPI。现在也有一些存在于嵌入式系统中的OpenGL版本,这使得OpenGL也可应用于手提式设备。
一门图形学的课程不仅仅是讲授如何使用一种特定的API,而是一种好的API会使得讲授图形学中的一些关键内容变得更容易,这些内容包括三维图形学、光照和明暗处理、客户/服务器图形系统、建模以及实现算法。我认为,OpenGL广泛的功能以及良好定义的结构可以为讲授图形学理论和实践这两方面都提供更好的基础,而且OpenGL同样也可以为讲授包括纹理映射、图像组合以及可编程着色器在内的一些高级概念提供更好的基础。
大约15年以前我开始在授课时使用OpenGL,结果令我非常惊喜。在那个学期的期中之前,所有的学生都能编写出中等复杂程度的三维图形程序了,而编写这样的程序需要理解三维显示和事件驱动输入。在我以前讲授图形学的时候,从没有收到过这么好的教学效果,那次课程使我开始重新编写以前的书。
本书是关于计算机图形学的教科书,并不是OpenGL使用手册。因此,我没有把OpenGL API的方方面面都一一介绍,而是仅仅解释了对于掌握本书内容来说必要的那些部分。我是以一种允许其他API用户毫无困难地阅读本书的方式来介绍OpenGL的,对于想要了解OpenGL更多细节的学生们,我新近的书OpenGL:A Primer,Third Edition(Addison-Wesley 2008出版)是一本有价值的补充读物。
这个版本使用的编程语言是C和C++,在大多数情况下使用C语言。这样做出于两个原因:第一,OpenGL不是面向对象的,所以使用C++或者Java并不能为介绍OpenGL增加益处,除非我想在OpenGL和用户之间插入一个面向对象的几何图形库。尽管面向对象有诱人的特性,但我并没有这么做,因为这样不但会偏离图形学的主题,而且会使编程能力很强但并不熟悉面向对象语言的学生觉得本书难以接受。第二,我的经验表明,面向对象的方法为用户隐藏了一些内部机制(这正是面向对象方法所要做的),但本书是计算机图形学的导论,我想让读者清楚地知道最底层所发生的事情。虽然以计算机图形学为背景来介绍面向对象编程是非常精彩的,但是在我看来,面向对象的方法并不是向计算机科学和工程专业的学生讲授图形学最有效的方法。不过,场景图是面向对象的,使用C++来介绍它是有好处的,这是例外。我的本科学生在低年级课程中学过了Java和C++,他们能够读懂本书中的C和C++代码。
适用的读者
本书适用的读者包括:计算机科学和工程专业的高年级本科生和一年级研究生,以及具有良好程序设计能力的其他专业学生。本书对于许多专业人士也是有价值的。我已经为专业人员讲授了100多次短期课程,我从这些非传统意义的学生身上获得的经验极大地影响了本书的内容。
在阅读本书之前,读者应该熟练掌握C或者C++语言、理解链表和树等基本数据结构并具有线性代数和三角学的初步知识。我发现计算机科学专业学生的数学背景相差很大,不管本科生还是研究生都是如此。因此,本书包含了很多计算机基础图形学所需的线性代数和几何学知识,附录B和附录C中对这些内容进行了总结。..
本书的内容组织
本书内容组织如下:第1章概览整个领域并通过光学设备介绍图像生成,这样我们从一开始就引入了三维图形学的概念。第2章介绍OpenGL编程,虽然编写的第一个例子程序是二维的(每一章都有一个或者多个完整的编程例子),但是这个程序是嵌入在三维环境下编写的,并且可以扩展到三维。第3章讨论现代客户/服务器环境下的交互式图形学并开发事件驱动图形程序。第4章和第5章讨论三维图形学概念,第4章讨论如何定义和处理三维对象,而第5章讨论如何观察它们。第6章介绍光线和材质之间的相互作用以及明暗处理。在讲授前6章时应该按照先后顺序进行,在一个总共15周的学期里,大约10周内就可以讲完这些内容。
后面的7章可以按照任何顺序阅读。所有这7章都或多或少是开放式的,读者可以概览,也可以深究其中的一些课题。第7章讨论光栅化,对光栅化的每个基本步骤都给出了一种或两种主要算法,这些基本步骤包括裁剪、直线段生成和多边形填充。第8章介绍图形硬件和OpenGL现在所支持的许多新功能,所有这些技术都需要与各种缓存打交道,这一章还简单讨论了计算机图形学中的走样问题。第9章介绍OpenGL着色语言(GLSL)中的可编程着色程序,它现在是OpenGL的一部分。我们可以利用可编程着色程序来改进技术方法,如凹凸映射现在能以实时方式实现。第8章和第9章讨论了用于所有交互式图形系统的标准观察流水线。
第10章包含若干松散内容,涉及的课题从构造封装各部分之间联系的模型到Internet图形学高级方法。这一章包含一个简单场景图API,并介绍了开放场景图(Open Scene Graph)。第11章介绍了若干过程方法,包括粒子系统、分形和过程噪声。第12章讨论了曲线和曲面,包括细分曲面。第13章考察了其他一些绘制方法,进一步讨论了光线跟踪和辐射度方法,还介绍了基于图像的绘制和并行绘制。
附录A主要是本书第一部分的程序,它们也可以从网上得到(参看辅助材料),附录B和附录C包含对背景数学知识的回顾,附录D包括本书用到的OpenGL函数一览。
相对第四版的变化
现在,不但图形系统的功能大为增强,而且从高端到低端工作站的价格也大幅下降。最近几年,图形系统每秒钟能够绘制超过1亿个具有光照效果和经过纹理映射的三维多边形,价格已经从超过10万美元下降到不足1000美元。用于个人计算机的商用图形板的出现具有特别重要的意义,这些图形板支持复杂的三维应用程序,最低价格大约为100美元。在软件方面,OpenGL仍旧是编写应用程序和为多平台应用开发高级产品的标准程序员接口,OpenGL支持从大型科学计算可视化到手机游戏的广阔应用领域。
自顶向下的方法
图形学的新进展和本书前4版的成功使我一直坚持采用一种自顶向下的、面向编程的方法来介绍计算机图形学的基本知识。虽然现在许多院校的计算机科学和工程系在图形学方面开设了多门课程,但是多数学生只选修其中的一门课程。学生们在已经学习了程序设计、数据结构、算法、软件工程和基础数学以后,给他们安排一门计算机图形学课程,将允许教师以内容充实并且有趣的方式按上述已学课程来组织课程内容,我想学生们会尽可能地编写出三维应用程序。底层的算法,例如绘制线段或者填充多边形,可以在学生们编写了图形程序之后再考虑。
计算机教育的先驱JohnKemeny曾经把自顶向下的编程方法与我们熟悉的汽车来类比:你没必要知道汽车罩下面是什么,但是如果知道内部的工作原理,你就会去驾驶汽车而不是坐在汽车后座上。同样的类比适用于讲授计算机图形学的方法。第一种方法(算法的方法)是把汽车工作原理的方方面面都交代清楚:发动机、传动装置、燃烧过程等。第二种方法(概览的方法)是雇一名司机,自己坐在后面观光。第三种方法(本书采用的编程方法)是教会你如何驾驶并把车开到想要去的地方,正如一句过时的汽车租赁广告词所说的那样:“让我们把你放到驾驶员的位子上去。”
使用OponGL和C语言编程
25年前我开始讲授计算机图形学,当时以面向编程的方式讲授这门课程并编写出教材的最大障碍是缺乏一个广泛接受的图形库或者应用程序接口(API)。遇到的困难包括:高成本、可用性受限、缺乏通用性以及高复杂性。开发OpenGL解决了我们中很多人在其他API(例如GKS和PHIGS)中遇到的大多数困难以及在使用自己编写的软件作为替代时所面临的大多数困难,今天所有的平台都支持OpenGL,它已和Microsoft Windows以及Apple Macintosh操作系统集成在一起,实际上所有的图形卡都有驱动程序。在大多数Linux分布式系统中也都包含一个称为Mesa的OpenGLAPI。现在也有一些存在于嵌入式系统中的OpenGL版本,这使得OpenGL也可应用于手提式设备。
一门图形学的课程不仅仅是讲授如何使用一种特定的API,而是一种好的API会使得讲授图形学中的一些关键内容变得更容易,这些内容包括三维图形学、光照和明暗处理、客户/服务器图形系统、建模以及实现算法。我认为,OpenGL广泛的功能以及良好定义的结构可以为讲授图形学理论和实践这两方面都提供更好的基础,而且OpenGL同样也可以为讲授包括纹理映射、图像组合以及可编程着色器在内的一些高级概念提供更好的基础。
大约15年以前我开始在授课时使用OpenGL,结果令我非常惊喜。在那个学期的期中之前,所有的学生都能编写出中等复杂程度的三维图形程序了,而编写这样的程序需要理解三维显示和事件驱动输入。在我以前讲授图形学的时候,从没有收到过这么好的教学效果,那次课程使我开始重新编写以前的书。
本书是关于计算机图形学的教科书,并不是OpenGL使用手册。因此,我没有把OpenGL API的方方面面都一一介绍,而是仅仅解释了对于掌握本书内容来说必要的那些部分。我是以一种允许其他API用户毫无困难地阅读本书的方式来介绍OpenGL的,对于想要了解OpenGL更多细节的学生们,我新近的书OpenGL:A Primer,Third Edition(Addison-Wesley 2008出版)是一本有价值的补充读物。
这个版本使用的编程语言是C和C++,在大多数情况下使用C语言。这样做出于两个原因:第一,OpenGL不是面向对象的,所以使用C++或者Java并不能为介绍OpenGL增加益处,除非我想在OpenGL和用户之间插入一个面向对象的几何图形库。尽管面向对象有诱人的特性,但我并没有这么做,因为这样不但会偏离图形学的主题,而且会使编程能力很强但并不熟悉面向对象语言的学生觉得本书难以接受。第二,我的经验表明,面向对象的方法为用户隐藏了一些内部机制(这正是面向对象方法所要做的),但本书是计算机图形学的导论,我想让读者清楚地知道最底层所发生的事情。虽然以计算机图形学为背景来介绍面向对象编程是非常精彩的,但是在我看来,面向对象的方法并不是向计算机科学和工程专业的学生讲授图形学最有效的方法。不过,场景图是面向对象的,使用C++来介绍它是有好处的,这是例外。我的本科学生在低年级课程中学过了Java和C++,他们能够读懂本书中的C和C++代码。
适用的读者
本书适用的读者包括:计算机科学和工程专业的高年级本科生和一年级研究生,以及具有良好程序设计能力的其他专业学生。本书对于许多专业人士也是有价值的。我已经为专业人员讲授了100多次短期课程,我从这些非传统意义的学生身上获得的经验极大地影响了本书的内容。
在阅读本书之前,读者应该熟练掌握C或者C++语言、理解链表和树等基本数据结构并具有线性代数和三角学的初步知识。我发现计算机科学专业学生的数学背景相差很大,不管本科生还是研究生都是如此。因此,本书包含了很多计算机基础图形学所需的线性代数和几何学知识,附录B和附录C中对这些内容进行了总结。..
本书的内容组织
本书内容组织如下:第1章概览整个领域并通过光学设备介绍图像生成,这样我们从一开始就引入了三维图形学的概念。第2章介绍OpenGL编程,虽然编写的第一个例子程序是二维的(每一章都有一个或者多个完整的编程例子),但是这个程序是嵌入在三维环境下编写的,并且可以扩展到三维。第3章讨论现代客户/服务器环境下的交互式图形学并开发事件驱动图形程序。第4章和第5章讨论三维图形学概念,第4章讨论如何定义和处理三维对象,而第5章讨论如何观察它们。第6章介绍光线和材质之间的相互作用以及明暗处理。在讲授前6章时应该按照先后顺序进行,在一个总共15周的学期里,大约10周内就可以讲完这些内容。
后面的7章可以按照任何顺序阅读。所有这7章都或多或少是开放式的,读者可以概览,也可以深究其中的一些课题。第7章讨论光栅化,对光栅化的每个基本步骤都给出了一种或两种主要算法,这些基本步骤包括裁剪、直线段生成和多边形填充。第8章介绍图形硬件和OpenGL现在所支持的许多新功能,所有这些技术都需要与各种缓存打交道,这一章还简单讨论了计算机图形学中的走样问题。第9章介绍OpenGL着色语言(GLSL)中的可编程着色程序,它现在是OpenGL的一部分。我们可以利用可编程着色程序来改进技术方法,如凹凸映射现在能以实时方式实现。第8章和第9章讨论了用于所有交互式图形系统的标准观察流水线。
第10章包含若干松散内容,涉及的课题从构造封装各部分之间联系的模型到Internet图形学高级方法。这一章包含一个简单场景图API,并介绍了开放场景图(Open Scene Graph)。第11章介绍了若干过程方法,包括粒子系统、分形和过程噪声。第12章讨论了曲线和曲面,包括细分曲面。第13章考察了其他一些绘制方法,进一步讨论了光线跟踪和辐射度方法,还介绍了基于图像的绘制和并行绘制。
附录A主要是本书第一部分的程序,它们也可以从网上得到(参看辅助材料),附录B和附录C包含对背景数学知识的回顾,附录D包括本书用到的OpenGL函数一览。
相对第四版的变化
【插图】








点击看大图



加载中...

