DirectX特效游戏程序设计 [平装] 7030171497,9787030171498

配送至
$ $ USD

《DirectX特效游戏程序设计》分为三个部分,第一部分介绍了Windows编程、3D图形学以及DirectX的基础知识;第二部分以示例方式介绍了在特效游戏中使用DirectX实现各种二维图形效果的方法,包括火焰、二维水面、图像反馈的扭曲、云彩、图像模糊化及消隐等;第三部分介绍了实现三维图形效果的方法,包括各种粒子、爆炸、投射、炫光、三维水体及顶点和像素的消隐等。 《DirectX特效游戏程序设计》叙述深入浅出,代码举例丰富而精炼,读者可在其指导下迅速上手掌握DirectX特效游戏程序设计的基本方法。《DirectX特效游戏程序设计》适合各种水平的编程人员学习和参考。
编辑推荐
《DirectX特效游戏程序设计》由科学出版社出版。
作者简介
作者:(美国)M.麦卡斯基 译者:柯鹏 M.麦卡斯基,一位有七年商业程序设计经验的软件工程师,自1 990年以来成功地管理了自己的游戏公司。在2000年,他的公司Spitl studios成为游戏开发者会议第二届年度独立游戏节中九家最终入围决赛的公司之一。他还为Garne Dev.net网站及其他一些网站撰写了很多文章。
目录
第一部分 基本内容. 第1章 Windows程序设计介绍 1. 1 基于事件驱动的程序设计 1. 2 第一个Windows程序 1. 3 小结 1. 4 示例程序 1. 5 练习 第2章 高级Win32 API程序设计 2. 1 Windows GDI 2. 2 错误检查 2. 3 使用资源 2. 4 制作对话框 2. 5 小结 2. 6 示例程序 2. 7 练习 第3章 DirectX 3. 1 什么是DirectX 3. 2 应该使用DirectX吗 3. 3 使用DirectX的基本规则 3. 4 DirectInput 3. 5 DirectAudio 3. 6 DirectPlay 3. 7 DirectShow 3. 8 小结 3. 9 示例程序 3. 10 练习 第4章 三维数学基础 4. 1 欢迎来到三维世界 4. 2 向量 4. 3 矩阵 4. 4 四元数 4. 5 小结 4. 6 示例程序 4. 7 练习 第5章 三维概念 5. 1 三维模型 5. 2 高级三维模型技术 5. 3 摄像机和视口 5. 4 三维几何流水线 5. 5 深度缓冲区 5. 6 小结 5. 7 示例程序 5. 8 练习 第6章 DirectGraphles介绍 6. 1 DirectGraphics基础 6. 2 第一个三维程序 6. 3 图像的淡入. 淡出. 颜色闪烁——gamma控制 6. 4 小结 6. 5 示例程序 6. 6 练习 第7章 光照 7. 1 自然界中的光 7. 2 Direct3D的光照概念 7. 3 Direct3D光照属性 7. 4 Direct3D材质属性 7. 5 Direct3D光照编程 7. 6 Direct3D材质编程 7. 7 小结 7. 8 示例程序 7. 9 练习 第8章 基本纹理 8. 1 基本纹理的概念 8. 2 基本纹理程序设计 8. 3 小结 8. 4 示例程序 8. 5 练习 第9章 高级纹理 9. 1 多重纹理混合 9. 2 光照映射 9. 3 环境映射 9. 4 多重纹理映射的其他用处 9. 5 使用效果 9. 6 小结 9. 7 示例程序 9. 8 练习 第10章 顶点和像素着色器 10. 1 为什么使用着色器 10. 2 顶点着色器 10. 3 像素着色器 10. 4 小结 10. 5 示例程序 10. 6 练习 第二部分 二维效果 第11章 火焰 11. 1 工作原理 11. 2 编写代码 11. 3 调整火焰效果 11. 4 火焰效果的用途 11. 5 优化火焰效果 11. 6 小结 11. 7 示例程序 11. 8 练习 第12章 二维水 12. 1 工作原理 12. 2 编写代码 12. 3 改进水面效果 12. 4 水面效果的用途 12. 5 优化水面效果 12. 6 小结 12. 7 示例程序 12. 8 练习 第13章 图像反馈 13. 1 工作原理 13. 2 编写代码 13. 3 调整图像反馈效果 13. 4 图像反馈的用途 13. 5 小结 13. 6 示例程序 13. 7 练习 第14章 图像扭曲 14. 1 工作原理 14. 2 编写代码 14. 3 调整图像扭曲 14. 4 图像扭曲的用途 14. 5 优化图像扭曲 14. 6 小结 14. 7 示例程序 14. 8 练习 第15章 云 15. 1 作原理 15. 2 编写代码 15. 3 调整云的效果 15. 4 云效果的用途 15. 5 优化云效果 15. 6 小结 15. 7 示例程序 15. 8 练习 第16章 模糊和其他形式的图像处理 16. 1 工作原理 16. 2 编写代码 16. 3 图像处理的用途 16. 4 优化图像处理 16. 5 小结 16. 6 示例程序 16. 7 练习 第17章 渐变. 擦除及其他过渡 17. 1 简单过渡 17. 2 高级过渡 17. 3 用于过渡的类层次 17. 4 小结 17. 5 示例程序 17. 6 练习 第三部分 三维效果 第18章 雨. 烟. 魔法及更多:粒子系统的乐趣 18. 1 粒子系统 18. 2 粒子系统要设计得多么复杂 18. 3 粒子核心属性 18. 4 粒子系统核心属性 18. 5 编程实现一个基本粒子系统 18. 6 制作粒子系统编辑器 18. 7 小结 18. 8 示例程序 18. 9 练习 第19章 高级粒子系统 19. 1 制作高级粒子系统 19. 2 可编脚本粒子系统的用途 19. 3 优化可编写脚本的粒子系统 19. 4 其他可能的改进 19. 5 小结 19. 6 示例程序 19. 7 练习 第20章 爆炸效果 20. 1 从简单开始:爆炸精灵 20. 2 爆炸群 20. 3 加入粒子系统代码 20. 4 添加冲击波 20. 5 天空盒 20. 6 小结 20. 7 示例程序 20. 8 练习 第21章 枪支和炮弹 21. 1 火力范围框架 21. 2 机枪 21. 3 离子炮 21. 4 光电武器 21. 5 小结 21. 6 示例程序 21. 7 练习 第22章 镜头光晕 22. 1 什么是镜头光晕 22. 2 概念 22. 3 镜头光晕对象 22. 4 渲染二维镜头光晕 22. 5 渲染三维镜头光晕 22. 6 计算是否需要绘制镜头光晕 22. 7 效果:不仅仅是镜头光晕 22. 8 小结 22. 9 示例程序 22. 10 练习 第23章 三维水 23. 1 概念 23. 2 代码 23. 3 小结 23. 4 示例程序 23. 5 练习 第24章 顶点和像素着色器效果 24. 1 漫画着色 24. 2 在漫画着色中添加笔划 24. 3 使用像素着色器进行图像处理 24. 4 小结 24. 5 示例程序 24. 6 练习 附录A 高级C++和C++主题 A. 2 标准模板库 A. 3 示例程序 A. 4 练习 附录B DevStudio介绍
序言
有趣的是,我已经写完了好几百页的内容,“前言”却是最后写的部分,也是最难写的部分。 本书讨论了三维游戏特效的实现技术。从书中可以看到游戏或者演示中的一些精彩内容而且会惊讶:“到底它们是怎样实现的呢?”读者可能会碰到精彩的概念,学习应用自己的知识来编写很棒的游戏程序。许多有才华的人已经编写了很多关于怎样编程创造三维世界的伟大书籍。他们所做的伟大工作涵盖了编写令人瞩目的三维应用程序所必需的内容。 但是,游戏不仅仅是应用程序。大家可能不希望在CAD程序中看到冒泡的熔岩,也不打算在Excel中看到“引爆A4.A6”的菜单项。游戏是不同的,这本书打算讲述那些令人瞩目的效果背后的技巧,正是因为这些技巧才不会使人把游戏错当作简单的“应用程序”,才能让游戏看上去和玩起来一样有趣。 这本书适用于不同水平的程序员。如果读者初学DirectX和Windows程序设计,本书提供了一些入门内容让读者快速掌握。即使对这些技术很熟悉的人,仍然能够从第一部分“基础知识”中有所收获,因为针对高级程序员们,书中通过许多提示和技巧深化了内容。 第二部分和第三部分是核心内容。第二部分“二维效果”描述了二维特效——这些效果依赖于3D显卡来发挥它们的魔力,但是实际上是二维的,例如过渡(淡.Z./淡出、交叉淡化)和图像处理。这些二维效果适用于任何3D加速游戏,二维或者三维。 第三部分“三维效果”讲述了三维效果和技巧,这些效果和技巧设计用来在不损失帧速率的前提下,尽可能精确地模拟精彩的现象。爆炸、水、镜头光晕、魔力、运输机所有能够把“程序”变成感官负荷的游戏,人们就会忍不住去玩。 最后,附录A是关于c++语言和STL(c++标准模板库)的描述。书中使用了一些高级C++语言特性(模板、结构化异常处理,std::vector),这些内容并不是所有程序员都很熟悉。因此这些篇幅提供了一个快速教程,让读者在阅读和调试示例程序时更加得心应手。附录B提供了关于Microsoft的集成开发环境Dev Studio的简单描述。 这些就是本书的所有内容。但还是有一些内容本书中没有包括。比如,没有大量列举代码,只是尽量列出简短的代码片断而不是整个程序的陈列。书本是学习概念和算法最好的地方;而阅读代码并真正了解概念与算法如何匹配的最好地方是计算机,在计算机上可以改动代码、让程序崩溃以及修正错误,这些都可以在语法加亮和最喜欢的:MP3乐曲的伴随下进行。因此书中到处都包含了代码片断,但是仅此而已。本书对大部分代码片断都进一步做了省略,以便让读者的注意力准确地落在需要的内容上。
文摘
插图: 纹理管理包括确定哪个纹理驻留图形内存(因此使用时没有速度损失)和哪个纹理必须转移到系统内存。对于简单的程序,你可能运气特别好,发现所有的纹理都可以容纳在8MB或者16MB的图形内存中;市面上的大部分显卡都至少有这么多的RAM。然而,在大部分情况下,最后得到的纹理都会超出图形内存的容量,你必须管理哪个纹理有权存储在显卡中。 Direct3D可以帮助你从中解脱出来。它提供了管理纹理的支持。在创建纹理时,可以设定Direct3D应该把它放在哪个内存池中。在大部分情况下,会选择D3DPOOLMANAGED,通知Direct3D来管理纹理以获得优化的性能,它会在需要的时候把纹理移入或者移出图形内存。 几百年来,一个常见的建筑技巧就是在建筑物的平直面上粉刷图形,让它看起来不是平的。所粉刷的图形可以是从简单的斜面到拱门、圆顶或者其他的完整画面,只要小心使用了透视、对比和光照的技巧,这些都有可能实现。这个技巧能够起作用是因为人们观看建筑物是从下面很远处和/或远方很远处,因此他们无法察觉这个场景是没有深度的。 好的游戏开发人员知道何时必须创建顶点而何时又能够使用精心制作的纹理来伪装曲线或者边缘的外观。 假设你需要创建一堵砖墙。错误的实现方法是创造一个有8个顶点的砖块,然后复制数百次来组成一堵墙,这堵墙就由数千个顶点构成了。正确的方式是为整个墙创建6个顶点,然后使用砖的纹理来制造这堵墙不只是个平面矩形的假象。 游戏开发人员还在他们的人物面部使用这个技巧。仔细观察游戏人物的面部特征,你会发现只有很少的实际顶点——可能只有鼻子和耳朵有一些,有时候脸颊上有一些,但是几乎不可能在诸如嘴唇、眉毛和眼眶等地方有顶点(除非,这个游戏具有渐次网格优化功能,这时当你靠近观察时,计算机会为模型增加更多的顶点)。 很显然,必须在顶点和纹理之间寻找正确的平衡。过多的顶点会导致游戏速度太慢。没有足够的顶点又会导致图形品质的下降。此外,通常需要的纹理数量增加时,会导致对图形内存的操作更加困难。创建顶点和纹理数目适当的模型是经验丰富的游戏艺术家的标记。在创建模型和纹理时请记住这一点。
ISBN
出版社科学出版社
作者M.麦卡斯基
尺寸16