DirectX 9.0 3D游戏开发编程基础
基本信息
- 作者: (美)Frank D.Luna [作译者介绍]
- 译者: 段菲
- 丛书名: 游戏软件开发专家系列
- 出版社:清华大学出版社
- ISBN:9787302130253
- 上架时间:2007-4-25
- 出版日期:2007 年4月
- 开本:16开
- 页码:371
- 版次:1-1
- 所属分类:
计算机 > 游戏 > 游戏编程
内容简介回到顶部↑
书籍
计算机书籍
本书主要介绍如何使用directx 9.0开发交互式3d图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3d概念。其他主题几乎涵盖了direct3d中的所有基本运算,例如图元的绘制、光照、纹理、alpha融合、模板,以及如何使用direct3d实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。
本书内容深入浅出,内容广泛,可供从事3d游戏程序设计、可视化系统设计或其他图形应用程序开发的开发人员和大中专院校学生参考,也极适合各种游戏开发培训机构作为direct3d编程的培训教程。
计算机书籍
本书主要介绍如何使用directx 9.0开发交互式3d图形程序,重点是游戏开发。全书首先介绍了必要的数学工具,然后讲解了相关的3d概念。其他主题几乎涵盖了direct3d中的所有基本运算,例如图元的绘制、光照、纹理、alpha融合、模板,以及如何使用direct3d实现游戏中所需的技术。介绍顶定点着色器和像素着色器的章节(包含了效果框架和新的高级着色语言的内容)对这些关键运算进行了较为集中的讨论。
本书内容深入浅出,内容广泛,可供从事3d游戏程序设计、可视化系统设计或其他图形应用程序开发的开发人员和大中专院校学生参考,也极适合各种游戏开发培训机构作为direct3d编程的培训教程。
作译者回到顶部↑
本书提供作译者介绍
Prank Luna是Hero lnteractive的程序员,从事交互式3D图形编程已有八年多。他最早接触DirectX可以追溯到DirectX5发布之时,目前居住在加州的洛杉矶市。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第ⅰ部分 基础知识
必备的数学知识
3d空间中的向量
矩阵
基本变换
平面(选读)
射线(选读)
小结
第ⅱ部分 direct3d基础
第1章 初始化direct3d
1.1 direct3d概述
1.2 com(组件对象模型)
1.3 预备知识
1.4 direct3d的初始化
1.5 例程:direct3d的初始化
1.6 小结
第2章 绘制流水线
2.1 模型表示
2.2 虚拟摄像机
2.3 绘制流水线
必备的数学知识
3d空间中的向量
矩阵
基本变换
平面(选读)
射线(选读)
小结
第ⅱ部分 direct3d基础
第1章 初始化direct3d
1.1 direct3d概述
1.2 com(组件对象模型)
1.3 预备知识
1.4 direct3d的初始化
1.5 例程:direct3d的初始化
1.6 小结
第2章 绘制流水线
2.1 模型表示
2.2 虚拟摄像机
2.3 绘制流水线
译者序回到顶部↑
DirectX是微软公司开发的一套功能丰富的底层API,其功能涵盖了对2D/3D图形加速的支持、对各种输入设备的控制,以及对声音和音乐输出的混音和采样、对多玩家网络游戏的控制、对各种多媒体流模式的控制等。DirectX设计者的初衷是让Windows成为理想的游戏开发平台,如今他们正逐步实现这一理想。实际上,虽然不断遭遇同样出色的竞争对手(如OpenGL)的挑战,但目前的形势是——DirectX在游戏开发领域已经无可争议地占据王者地位,而且这种趋势极有可能保持下去。当然,这并不是说DirectX能够完全取代其他API,只是“术业有专攻”,各自有不同的擅长领域罢了。.
DirectX在体系结构上很突出的优点是它使用了两层驱动——HAL和REF,那些为硬件所支持的特定功能可由HAL来控制(即可以充分地发挥硬件的加速功能),从而可以获得理想的运行速度。而对于那些不为硬件所支持的功能,借助REF,程序能够以软件方式来模拟相应的运算或处理过程,从而使得无论硬件配置是否高端,开发人员都可以完整地体验和测试DirectX所提供的全部功能。
关于DirectX原理及编程的书籍,目前国内还很少,能体现出DirectX 9.0版本新特性的书籍更是少之又少。这本《DirectX 9.0 3D游戏开发编程基础》可以说从一定程度上弥补了国内图书市场的缺憾。这本书专注于讲解DirectX与图形绘制及渲染相关的一个核心子集——Direct3D,是DirectX 3D图形编程领域的一本经典著作,在国外自出版以来,就一直雄踞此类书的销量榜首。该书有一些很鲜明的特点:
(1)授人鱼,更授人与渔
本书在注重讲解原理和方法的同时,也注重引导读者如何获取知识,如何利用DirectX SDK帮助文档,非常有利于提高读者的学习能力。尤其需要指出的是,作者专门为本书维护了一个网站www.moon-labs.com,该网站上不但有全书所有例程的源代码,还在此提供了与之相关但由于篇幅所限而略去的重要主题文档。同时,作者设立了一个DirectX技术的讨论区(作者的电子邮件地址是frank@gameinstitute.com),并时常亲自出面答疑。这些资源对于读者的作用无疑是不可估量的。
(2)内容全面,由浅入深..
本书根据由易到难的顺序合理安排各章,刚入门的读者只需按书中的章节顺序安排学习,即可顺利掌握各章内容。本书虽属导论性质的著作,但是内容的跨度相当大,从基础的数学原理讲起,涵盖了Direct3D初始化、绘制流水线、颜色、光照、纹理、融合、模板、字体、网格、地形绘制、粒子系统、拾取技术直到高级着色语言和效果框架,基本上涵盖了Direct3D常用的方方面面。书中某些章节的实例虽然算法比较简单,甚至不够实用,但从理解原理的角度来看还是很适宜的,而且这样可以为读者提供更多的思考空间。
(3)提供了一个清晰的程序框架
本书中所有的例程都用到了作者自编的一个程序框架,层次非常清晰,降低了程序中各模块的耦合性。该框架将所有程序都需要进行的公共操作封装起来,使得读者在学习新知识点时,精力不必分散到与当前主题无关的那些工作中。
(4)实例丰富、理论与实践并重
本书的每一章都是在讲解原理的同时插入一小段代码片段来形象地进行辅助说明,而且每章或每个大主题的最后,都会附上一个完整的综合性实例,非常有助于读者加深对当前主题的理解。
本书的作者Frank D.Luna是位著名的游戏开发专家,他从事交互式图形程序的研究与开发已有8年,而且有超过10年的C++编程经验。从DircctX 5.0起,Luna就一直在关注和使用DirectX。
作为译者,本人在翻译过程中力求忠于原作。书中所涉及的所有专业术语,都查阅了大量国内外相关文献,并请教了许多专家学者,力求找到最完美、最准确的译法,并在可能引起歧义和冲突的地方做了适当调整。同时,在专业术语第一次出现或在容易混淆的环境中出现时,都注上了该术语的英文原文,以便读者进行对比理解。为保证正确性,本书所有例程都在DirectX October 2006版和Visual C++ 2005中进行了调试和验证。另外在翻译过程中,修正了原书中的若干小错误和纰漏,并参照DirectX Oct 2006 SDK文档进行了修正。
本书全部章节的翻译都由译者一人完成,其间得到了清华大学出版社的大力支持,特别是文开琪编辑和宣颖编辑,她们投入了大量时间和精力,为该书的译稿提出了许多宝贵的修改意见,在此向她们表示深深的感谢。限于译者的水平,书中的错误和不妥之处在所难免,恳请读者批评指正,本人的邮箱d3dbook@gmail.com或d3dbook@163.com,热切期待着读者朋友的来信!...
段菲
2007-03-04
DirectX在体系结构上很突出的优点是它使用了两层驱动——HAL和REF,那些为硬件所支持的特定功能可由HAL来控制(即可以充分地发挥硬件的加速功能),从而可以获得理想的运行速度。而对于那些不为硬件所支持的功能,借助REF,程序能够以软件方式来模拟相应的运算或处理过程,从而使得无论硬件配置是否高端,开发人员都可以完整地体验和测试DirectX所提供的全部功能。
关于DirectX原理及编程的书籍,目前国内还很少,能体现出DirectX 9.0版本新特性的书籍更是少之又少。这本《DirectX 9.0 3D游戏开发编程基础》可以说从一定程度上弥补了国内图书市场的缺憾。这本书专注于讲解DirectX与图形绘制及渲染相关的一个核心子集——Direct3D,是DirectX 3D图形编程领域的一本经典著作,在国外自出版以来,就一直雄踞此类书的销量榜首。该书有一些很鲜明的特点:
(1)授人鱼,更授人与渔
本书在注重讲解原理和方法的同时,也注重引导读者如何获取知识,如何利用DirectX SDK帮助文档,非常有利于提高读者的学习能力。尤其需要指出的是,作者专门为本书维护了一个网站www.moon-labs.com,该网站上不但有全书所有例程的源代码,还在此提供了与之相关但由于篇幅所限而略去的重要主题文档。同时,作者设立了一个DirectX技术的讨论区(作者的电子邮件地址是frank@gameinstitute.com),并时常亲自出面答疑。这些资源对于读者的作用无疑是不可估量的。
(2)内容全面,由浅入深..
本书根据由易到难的顺序合理安排各章,刚入门的读者只需按书中的章节顺序安排学习,即可顺利掌握各章内容。本书虽属导论性质的著作,但是内容的跨度相当大,从基础的数学原理讲起,涵盖了Direct3D初始化、绘制流水线、颜色、光照、纹理、融合、模板、字体、网格、地形绘制、粒子系统、拾取技术直到高级着色语言和效果框架,基本上涵盖了Direct3D常用的方方面面。书中某些章节的实例虽然算法比较简单,甚至不够实用,但从理解原理的角度来看还是很适宜的,而且这样可以为读者提供更多的思考空间。
(3)提供了一个清晰的程序框架
本书中所有的例程都用到了作者自编的一个程序框架,层次非常清晰,降低了程序中各模块的耦合性。该框架将所有程序都需要进行的公共操作封装起来,使得读者在学习新知识点时,精力不必分散到与当前主题无关的那些工作中。
(4)实例丰富、理论与实践并重
本书的每一章都是在讲解原理的同时插入一小段代码片段来形象地进行辅助说明,而且每章或每个大主题的最后,都会附上一个完整的综合性实例,非常有助于读者加深对当前主题的理解。
本书的作者Frank D.Luna是位著名的游戏开发专家,他从事交互式图形程序的研究与开发已有8年,而且有超过10年的C++编程经验。从DircctX 5.0起,Luna就一直在关注和使用DirectX。
作为译者,本人在翻译过程中力求忠于原作。书中所涉及的所有专业术语,都查阅了大量国内外相关文献,并请教了许多专家学者,力求找到最完美、最准确的译法,并在可能引起歧义和冲突的地方做了适当调整。同时,在专业术语第一次出现或在容易混淆的环境中出现时,都注上了该术语的英文原文,以便读者进行对比理解。为保证正确性,本书所有例程都在DirectX October 2006版和Visual C++ 2005中进行了调试和验证。另外在翻译过程中,修正了原书中的若干小错误和纰漏,并参照DirectX Oct 2006 SDK文档进行了修正。
本书全部章节的翻译都由译者一人完成,其间得到了清华大学出版社的大力支持,特别是文开琪编辑和宣颖编辑,她们投入了大量时间和精力,为该书的译稿提出了许多宝贵的修改意见,在此向她们表示深深的感谢。限于译者的水平,书中的错误和不妥之处在所难免,恳请读者批评指正,本人的邮箱d3dbook@gmail.com或d3dbook@163.com,热切期待着读者朋友的来信!...
段菲
2007-03-04
前言回到顶部↑
本书主要讲述如何使用DirectX 9.0开发3D交互式计算机图形程序,重点是游戏开发。我们将向您讲解Direct3D的基本原理,在您掌握了这些原理之后,您将有能力进一步学习并运用更多的相关高级技术。我们假定您阅读此书之前已经对DirectX有大致的了解。从开发者的角度看,DirectX是一套用于开发Windows平台多媒体应用程序的API(application programming interface,应用程序编程接口)。本书主要关注DirectX的一个特定子集——Direct3D。正如其名称所寓意的,Direct3D主要用于开发3D应用程序。.
本书分为四部分。第I部分介绍了贯穿全书的数字工具。第II部分涵盖了基本的3D技术,例如光照(lighting)、纹理(texturing)、Alpha融合(alpha blending)和模板(stenciling)等。第III部分主要是关于如何运用Direct3D实现一些有趣的技术和应用程序,例如拾取(picking)、地形绘制(terrain rendering)、粒子系统(particle system)、灵活虚拟摄像机(flexible virtual camera)以及加载和绘制3D模型(XFiles)。第IV部分的主题是顶点(vertex)和像素着色器(pixel shader),包括效果框架和新的(到DirectX 9.0版)高级着色语言。目前,着色器已在3D游戏编程中得到了广泛运用,未来局面依然会如此。我们将第IV部分的内容全部用于介绍着色器,以使读者能够跟上现代游戏编程发展的步伐。
对于初学者,最好按章节顺序从头到尾阅读本书。本书的章节编排经过了精心设计,保证了难度的循序渐进,同时在复杂度上也不会有阶跃性的突变。一般来说,对于某一特定章节我们都会使用前一章所介绍的技术和概念。这样,在您进入下一章学习新一章内容之前,请务必确保已经熟练掌握了前一章。有经验的读者可以有选择地阅读感兴趣的章节。
最后,您可能非常想知道阅读完本书之后您将能够制作什么样的游戏。我的回答是您最好大致浏览一下本书中例程的类型。根据本书介绍的技术以及您自身的灵感,您会对将要开发的游戏程序有一个大概的构想。
预备知识
本书是一本入门级的教科书。但是,这并不意味着没有编程经验的读者也能够轻松地阅读本书。读者需要已经熟练掌握了代数学、三角学、开发环境(例如Visual Studio)、C++,以及基本的数据结构(如数组和列表)。熟悉Windows编程会有所帮助但不必需;关于Windows编程的介绍请参见附录。
所需的开发工具
本书采用C++作为例程的编程语言。DirectX文档中提到“DirectX 9.0只支持Visual C++ 6.0及后续版本”。因此,要使用DirectX 9.0编写C++应用程序,您应有Visual C++(VC++)6.0、VC++7.0或VC++ 2005。
注意 本书的例程都是在Visual C++ 2005下编译和调试。大部分章节的例程也可以在Visual C++ 6.0下运行,但要注意下列细微差别。在VC++7.0/VC++2005中,下列代码合法并能够通过编译,因为变量cnt被认为是for循环的局部变量。
int main()
{
for(int cnt = 0; cnt [ 10; cnt++)
std::out[["Hello"[[std::endl;
for(int cnt = 0; cnt [ 10; cnt ++)
std::cout[["Hello"[[std::endl;
}
return 0;
}
但在VC++ 6.0中,上述代码不能成功编译。所给出的错误信息为“error C2374:‘cnt’:redefinition; multiple initialization”,这是因为在VC++ 6.0中,变量cnt不被认为是for循环的局部变量。因此,在VC++ 6.0中调试本书的例程时,您可能需要做些小改动。
推荐的硬件配置
本书分为四部分。第I部分介绍了贯穿全书的数字工具。第II部分涵盖了基本的3D技术,例如光照(lighting)、纹理(texturing)、Alpha融合(alpha blending)和模板(stenciling)等。第III部分主要是关于如何运用Direct3D实现一些有趣的技术和应用程序,例如拾取(picking)、地形绘制(terrain rendering)、粒子系统(particle system)、灵活虚拟摄像机(flexible virtual camera)以及加载和绘制3D模型(XFiles)。第IV部分的主题是顶点(vertex)和像素着色器(pixel shader),包括效果框架和新的(到DirectX 9.0版)高级着色语言。目前,着色器已在3D游戏编程中得到了广泛运用,未来局面依然会如此。我们将第IV部分的内容全部用于介绍着色器,以使读者能够跟上现代游戏编程发展的步伐。
对于初学者,最好按章节顺序从头到尾阅读本书。本书的章节编排经过了精心设计,保证了难度的循序渐进,同时在复杂度上也不会有阶跃性的突变。一般来说,对于某一特定章节我们都会使用前一章所介绍的技术和概念。这样,在您进入下一章学习新一章内容之前,请务必确保已经熟练掌握了前一章。有经验的读者可以有选择地阅读感兴趣的章节。
最后,您可能非常想知道阅读完本书之后您将能够制作什么样的游戏。我的回答是您最好大致浏览一下本书中例程的类型。根据本书介绍的技术以及您自身的灵感,您会对将要开发的游戏程序有一个大概的构想。
预备知识
本书是一本入门级的教科书。但是,这并不意味着没有编程经验的读者也能够轻松地阅读本书。读者需要已经熟练掌握了代数学、三角学、开发环境(例如Visual Studio)、C++,以及基本的数据结构(如数组和列表)。熟悉Windows编程会有所帮助但不必需;关于Windows编程的介绍请参见附录。
所需的开发工具
本书采用C++作为例程的编程语言。DirectX文档中提到“DirectX 9.0只支持Visual C++ 6.0及后续版本”。因此,要使用DirectX 9.0编写C++应用程序,您应有Visual C++(VC++)6.0、VC++7.0或VC++ 2005。
注意 本书的例程都是在Visual C++ 2005下编译和调试。大部分章节的例程也可以在Visual C++ 6.0下运行,但要注意下列细微差别。在VC++7.0/VC++2005中,下列代码合法并能够通过编译,因为变量cnt被认为是for循环的局部变量。
int main()
{
for(int cnt = 0; cnt [ 10; cnt++)
std::out[["Hello"[[std::endl;
for(int cnt = 0; cnt [ 10; cnt ++)
std::cout[["Hello"[[std::endl;
}
return 0;
}
但在VC++ 6.0中,上述代码不能成功编译。所给出的错误信息为“error C2374:‘cnt’:redefinition; multiple initialization”,这是因为在VC++ 6.0中,变量cnt不被认为是for循环的局部变量。因此,在VC++ 6.0中调试本书的例程时,您可能需要做些小改动。
推荐的硬件配置
评论交流
共有32人开贴评论 45人参与评论 27人参与打分 查看
评价等级:







发表于:2007-5-17 12:50:00
Good!只有ANSI C++的基础阅读本书完全没有问题,附录那章介绍了游戏开发中的Windows编程所需要的几乎全部知识,尤其难能可贵的是介绍了游戏开发中的Windows编程有别于其他类型应用程序的区别,这一点在很多书里是找不到的。译者翻译的也的确相当流畅,很好地表达了作者的思想,赞!数学基础那部分,如果没有修过线性代数看起来可能会有些吃力。最激动人心的是作者指出了现代游戏发展的趋势,深入浅出地介绍了HLSL。强烈推荐一读!要是价格能再低一点就perfect了,希望清华出版社在这方面多向高教看齐。
| 我要写评论 |
| 查看所有评论交流(共32条) |








点击看大图



加载中...

