出版时间:2009-5 出版社:水利水电出版社 作者:曾凡喜 等编著 页数:291
前言
记得我2005年初学习Direct3D时,国內没有一本介绍实时图形渲染技术的中文书籍,那时仅靠着阅读。Direct×SDK帮助文档学习Dieect×和3D图形相关知识,整个过程是有些困难的。诚然,要深入了解Dieect3D,不参考阅读Direct×SDK帮助文档是不行的。但对于初学者来说,不能不说这提高了学习者的门槛。因为它要求读者具备较强的英文阅读能力和较深的程序理解能力。如果读者不具备这方面的条件,难免会对这些帮助文档望而生畏。于是便产生了编写一本有关Direct×技术的中文书籍的想法。游戏产业是近几年较为火爆的IT产业之一,也带动游戏编程成为了编程领域的热点,越来越多的人参与到这个行业中,也促进了相关中文书籍的诞生,但大多数书籍都不适合初学者。有的书是从国外翻译过来的,翻译过程中造成了语句不通顺、文字习惯不符合国內读者的阅读习惯等。有的书本讲得太难太深入,让初学者望而生畏。因此,编写一本符合初学者要求,内容较为浅显的书籍应该是非常必要且具有市场价值的。笔者在编写本书的过程中,突出了以下特点:(1)內容全面,适合入门。学习Direct3D编程不同子其他编程,要求具备的相关基础知识有计算机图形学、线性代数等。因此本书不仅系统地讲述了Direct×接口和函数的使用,还简单剖析了其背后隐含的3D数学和图形学原理。另外,本书对Direct×接口介绍十分详细,基础部分的內容不亚于帮助文档。因此,本书非常适合初学者学习。(2)注重实践,实例丰富。部分重要的程序代码在书中列出,既突出了代码的重要性,又没有缩减整本书的文字量。读者可以对照程序代码看书,有利于加深对Direct3D的理解和掌握。本书主要由曾凡喜编写,另外参加本书部分编写工作的还有周炜、潘运亮、林晓珊、黄卓、李鑫、王克杰、庄东填、张晋宝、林丽、王小青、赵应丁、郝思嘉、李俊峰、童剑等。由于作者水平有限,再加上时间仓促,书中疏漏甚至错误之处在所难免,恳请广大读者批评指正。
内容概要
本书不仅系统地讲述了DirectX接口和函数的使用,而且简单剖析了其背后隐含的3D数学和图形学原理,并对DirectX接口介绍得十分详细,基础部分的内容不亚于帮助文档。 注重实践,实例丰富。部分重要的程序代码在书中列出,既突出了代码的重要性,又没有缩减整本书的文字量。读者可以对照程序代码看书,有利于加深对Direct3D的理解和掌握。 本书非常适合初学者或有一定基础的读者学习Direct3D实时渲染技术时使用。 本书提供实例的完整源代码,读者可以从中国水利水电出版社网站或万水书苑上免费下载,网址为:http://www.waterpub.com.cn/softdown/和http://www.wsbookshow.com。
书籍目录
丛书序前言第1章 Windows程序设计基础 1.1 一个完整的Windows应用程序 1.2 C++面向对象设计语言简介第2章 计算机图形学中的3D数学 2.1 向量及其运算 2.2 矩阵及矩阵变换 2.3 3D编程中的四元数 第3章 Direct3D设备及D3D程序框架 3.1 Direct3D和COM简介 3.2 初始化Direct3D设备 3.3 建立D3D程序框架第4章 从顶点到几何体 4.1 灵活顶点格式和顶点缓冲 4.2 绘制多边形 4.3 程序实例——圆柱体渲染cylinder 4.4 使用索引缓冲第5章 几何变换与图形渲染管道 5.1 几何变换 5.2 程序实例 5.3 图形渲染管道第6章 颜色与光照 6.1 Direct3D中的颜色表示与顶点颜色 6.2 材质与灯光 6.3 光照程序实例第7章 纹理 7.1 纹理基础 7.2 高级纹理技术第8章 风格模型 8.1 网格模型基础 8.2 程序实例——创建一个Mesh 8.3 X文件格式分析 8.4 网格模型类的封装第9章 Alpha混合与Alpha测试 9.1 Alpha混合 9.2 Alpha测试第10章 深度测试和雾化 10.1 深度测试及其使用 10.2 雾化方法 10.3 本章小结第11章 文本显示及文本显示内核第12章 LOD地形绘制 第13章 粒子系统及粒子内核封装第14章 ASM着色器参考文献
章节摘录
插图:这个函数是系统默认的消息处理函数,也就是说,窗口程序的消息处理函数处理的只是我们感兴趣的消息,即上面的case语句,对于其他的消息还是使用系统默认的消息处理函数。消息处理函数是要在窗口主程序中登记的,登记为自定义的消息处理函数之后,系统的消息就由它来处理了。所以,在本函数的最后要使用该默认函数,否则其他的消息本程序就无法处理了。比如一般在WM PAINT中处理绘图, 当关闭一个程序时,系统通常会发送一个WM DESTROY消息给应用程序。1.2 C++面向对象设计语言简介C++就是使用面向对象(Object-Oriented,OO)思想提升了的C语言(尽管许多人都认为C++和C语言是两门不同的语言,但我仍然趋向于认为C++是C语言的扩展和升级),主要在以下几个方面进行了升级:类的封装。继承。多态。类是将数据和函数组合起来的一种方式。通常,使用C语言编程时,用数据结构来存储结构,用函数来处理这些数据,然而,使用C++时,数据和处理数据的函数都封装在一个类中,这样做的好处是什么呢?这样可以将封装好的类看成有属性且具有某种行为的对象。这是一种更抽象更贴近实际情况的思考方式。C++的另一项特性是继承。创建类后,便可以指定类对象之间的关系,在一个类的基础上派生出另一个类。现实世界本来就是这样的,例如有一种名为Student的类,它具有一些内部属性和特定的行为,如名字、性别等都可以成为它的属性;它可以具有一些行为(如去参加考试等)。但在这里,Student是一个通用概念,比如小学生和大学生的行为显然是不一样的,而且小学生和大学生都具有他们特定的属性(比如小学生具有过儿童节的特权,大学生就没有这个权利了。)这时,就需要从Student类派生出两种新类,分别为LStudent(小学生)和HStudent(大学生)。图1.1描述了Student、LStudent和HSmdem之间的关系。明白这两个新类是如何从Student类派生出来的吗?LStudent和HStudent拥有Student所拥有的所有属性、方法和行为,但它们又具有自身特有的属性和方法。这就是继承的基本概念:可以在已有类的基础上创建出更复杂的类。另外,还有多重继承,它让你能够以多个类为基础,创建出新的类。C++和面向对象编程最重要的一点是多态(Polymorphism),其含义是“多种形式”。在C++语境下,多态指的是根据不同的环境,函数和运算符有不同的功能。例如,在C语言中,表达式a+b表示将a和b相加,在这里a和b必须是内置类型变量,如int、float、char、short等。也就是在C语言中,不能定义一个新类型,然后将这种类型的变量a和b相加。然而在C++中,完全可以重载+、-、*、/等运算符,根据数据的类型执行不同的运算。
编辑推荐
《Direct3D实时渲染技术》非常适合初学者或有一定基础的读者学习Direct3D实时渲染技术时使用。美术基础+项目创意+程序设计+产品实训模拟公司实战制作流程,运用“项目带学”的理念,做到所学知识与职场生涯无缝链接。
图书封面
评论、评分、阅读与下载