图书前言

随着数字技术的突飞猛进以及网络的广泛普及,计算机图形学(Computer Graphics)作为一种图形表示和设计的方法与工具得到了国内外的普遍重视,成为计算机科学中最为活跃的研究与应用领域之一。计算机图形学是一门建立在计算机科学、数学、物理、心理学和艺术等学科基础上的综合学科,它主要研究计算机图形的生成、处理和显示方法,以及利用计算机处理与图形有关的专业问题。随着人们对友好的人机交互环境的需求越来越强烈,图形用户界面已经成为软件的一个重要组成部分,以图形的方式来表示抽象的概念或数据已经成为信息领域的一个重要发展趋势。目前计算机图形技术已被广泛应用于数字媒体、计算机辅助设计、科学数据可视化,军事仿真等领域,并形成了一系列新的研究方向。

在计算机图形技术领域,美国和日本处于领先水平。自1968年美国科学家第一次在实验室中将自己亲属的照片扫描并输入计算机开始,计算机图形学已经发展了几十年,其中从1975年开始举办的SIGGRAPH会议不仅极大地推动了美国在该领域技术的发展,而且已经成为世界图形学技术的年度展览会。同时,日本依靠动漫产业,成为全球视频游戏和动画方面的先驱之一,从而推动了各种游戏软硬件水平的不断提高,使得计算机图形技术在日本得到了迅猛发展。如今计算机图形技术已经广泛应用于影视制作、游戏制作、多媒体教育和艺术创作等社会不同领域,每年给国家带来数千亿的经济利益和巨大的社会效益。可以说计算机图形技术已经成为一种迅速成长的新兴产业,深刻影响着国内外社会经济和文化的发展。

对于三维图形开发特别是视频游戏开发,开发人员不仅需要掌握图形学的原理、相关的数学和物理模型,还需要了解当前渲染技术和硬件显示技术的发展状况,以及图形学、多媒体最新技术的发展趋势。目前三维场景越来越复杂,场景规模大、模型种类繁多,细节丰富,包括阴影、高光、纹理和复杂光照等,高清渲染技术目前也已被广泛应用。处理这些越来越复杂的场景,丰富生动的高清渲染,会耗费越来越高的计算资源。因此需要更好地运用GPU来实现图形学的算法。《3D图形编程基础》针对上述发展趋势,提出了运用GPU和CPU融合的加速技术,充分利用Direct3D工具的图形编程技术。本书具有理论联系实际的特色,能够很好地为从事计算机图形学、动画和多媒体的研究人员,以及相关的程序开发人员提供参考。

本书的主要特色: 

 内容丰富而系统,基础内容和扩展性主题相结合。本书涉及了计算机图形学的主要内容,包括三维空间变换和基本算法、光照与材质、纹理映射、粒子系统等,结合Direct3D可编程渲染管线介绍了着色器编程、粒子系统、曲面细分等高级绘制内容。

 具有知识性和实用性相结合的特点。本书在讲述原理的同时,采用实例教学法,使读者既能够基于Direct3D 11迅速编写自己的三维图形程序,又能够了解相关的图形学基本原理和最新技术。

 内容编排和组织独具特色。Direct3D 11放弃了原先的固定管线结构,采用更加灵活的和深入的可编程方式,并且加入了计算着色器。本书对Direct3D 11图形渲染管道的各个阶段和计算着色器的使用进行详细描述,使读者能够更加细致地了解图形的绘制过程以及利用显卡进行通用计算的方法。

希望读者在领略计算机图形算法、理论及其应用知识的同时,在工作学习中享受到学业有成、事业成功的愉悦。

马利庄, 2011金秋于上海交通大学

前言

本书结合Direct3D 11介绍3D交互图形编程基础。很多人都希望开发自己的视频游戏。本书针对视频游戏中的图形编程问题进行讲解,希望能够帮助读者实现这个愿望。

适用的读者

本书需要读者有一定的C++窗口编程基础,对是否有图形学基础并无特别的要求,可以在阅读本书的同时参考相关图形学书籍,另外需要读者掌握一定的数学基础(本书第一部分有简单介绍)。

对于初学者,最好从前往后阅读,本书的章节是由易到难安排的,并且在后面章节中会用到很多前面介绍的基础知识。对Direct3D和3D图形编程有一定基础的读者可以挑选感兴趣的主题和章节直接阅读。

本书适合三类人群阅读: 

 希望进行3D图形编程的C++开发者,可以将本书作为入门书籍; 

 运用其他图形接口(例如OpenGL)进行编程的3D图形开发者,可以通过本书学习Direct3D 11开发; 

 有Direct3D 9或者Direct3D 10开发经验的3D图形开发者,可以通过本书进一步学习Direct3D 11开发。

软硬件配置

本书主要讲解基于Direct3D 11的3D图形编程,因此需要一定的软硬件配置环境,具体要求如下: 

 CPU 至少1.6GHz以上;  

 硬盘空间500MB; 

 内存至少512MB; 

 Windows 7操作系统; 

 DirectX 11 SDK 9.29或以上;  

 Visual Studio 2008或2010; 

 支持DirectX 11的显卡。

本书的内容组织

本书主要分为四个部分。

第一部分介绍3D图形编程所需的数学基础以及如何使用XNA数学库。

第二部分介绍Direct3D 11及如何用于3D图形编程。第4章对DirectX的发展进行介绍,并且对Direct3D的图形渲染管线进行了比较和描述; 第5章介绍初始化Direct3D的方法,并且对本书的程序框架进行介绍; 第6章对着色器语言HLSL进行介绍; 第7章通过两个实例使读者能够快速了解Direct3D的绘制过程; 第8章讲解如何使用Direct3D来渲染有颜色的物体; 第9章介绍如何模拟光照效果; 第10章介绍如何为三维物体添加纹理; 第11章介绍如何运用混合制造半透明效果; 第12章介绍如何利用模板来控制是否显示像素。

第三部分介绍Direct3D中的一些基本应用。第13章介绍在Direct3D中对网格模型的读取; 第14章介绍Camera类的设计; 第15章介绍粒子系统原理及其在Direct3D中的实现; 第16章介绍屏幕拾取的实现。

第四部分介绍Direct3D 11的高级主题,对图形渲染管道的各个阶段,以及计算着色器分别进行阐述。用实例的方式讲解Direct3D中的新特性。第17章介绍输入装配阶段; 第18章为顶点着色阶段; 第19章介绍曲面细分技术,包括外壳着色阶段、曲面细分阶段和域着色阶段; 第20章为几何着色阶段; 第21章为流输出和光栅化阶段; 第22章为像素着色阶段和合并阶段; 第23章介绍如何利用计算着色器进行通用计算的方法。

辅助材料

在作者的网站http://cose.seu.edu.cn/seugraph/  和清华大学出版社网站http://www.tup.com.cn上可以找到本书的辅助材料: 

 关于DirectX的资源信息; 

 本书源程序代码; 

 PPT课件。

致谢

在过去的几年中,作者有幸在东南大学遇到了许多优秀的学生,是他们使作者产生了写一本实用的3D图形编程书籍的想法,并且在大家共同的努力下,将这个想法成为了现实,从他们那里作者学到了很多东西。这些学生包括高瞻、肖健、瞿子钦、李瑾……

特别感谢南京邮电大学的肖学中博士给本书提出的宝贵建议。

东南大学图形与智能计算实验室的项目受到了国家自然科学基金(60803057)和江苏省自然科学基金(BK2009135)的支持,本书的部分内容来源于这些项目。

作者要感谢清华出版社的整个出版团队,并且特别感谢魏江江编辑的帮助,使本书能够得以顺利出版。

最后,作者要感谢丈夫林兆骥以及父母在各方面的理解和支持!

姚莉2011年秋于东南大学九龙湖

通信: 南京市东南大学计算机科学与工程系、软件学院,211189