Windows游戏编程大师技巧(第2版) [平装] 9787115292483

配送至
$ $ USD

《Windows游戏编程大师技巧(第2版)》是著名游戏程序设计大师André LaMothe的代表作。全书分为4个部分,共计15章和6个附录。作者Andre LaMothe循循善诱地从程序设计的角度介绍了在Windows环境下进行游戏开发所需的全部知识,包括Win32编程以及DirectX中所有主要组件(包括DirectDraw、DirectSound、DirectInput和DirectMusic)。 《Windows游戏编程大师技巧(第2版)》中还用单独的章节详细讲授了2D图形学和光栅化技术、游戏算法、多线程编程、文本游戏和解析、人工智能(包括模糊逻辑、神经网络和遗传算法)、物理建模(完全碰撞反应、动量传递和正反向运动学)及实时模拟等游戏程序开发中的关键技术。附录部分介绍了本书光盘的内容,如何安装DirectX,回顾了数学和三角学的基础知识、C++编程的基础知识,还给出了游戏编程资源以及ASCII表。 《Windows游戏编程大师技巧(第2版)》所附光盘上带有本书中所有程序的源代码、关于Direct3D和General 3D的文章和在线书籍以及众多免费的素材。 《Windows游戏编程大师技巧(第2版)》适合想要学习Windows游戏编程的人员阅读,对于有一定经验的专业游戏开发人员,也具有较高的参考价值。
编辑推荐
《3D游戏开发大师技巧》是游戏界传奇人物大师Andre LaMothe力作,Windows游戏程序员的入行必读书,由中国较早一代游戏开发者中的代表人物之一沙鹰翻译,由姚晓光、史晓明等专业人士重磅推荐。
名人推荐
《Windows游戏编程大师技巧(第2版)》堪称是众多游戏开发人员的启蒙经典。作者André LaMothe是把复杂问题简单化讲解方面的大师。时至今日,书中的游戏基础知识和理论、开发技巧,涉及游戏开发方方面面的核心问题等,仍然很有阅读参考的价值。沙鹰的译本也很准确、可靠,得到了读者的认同。如果你想在游戏开发方面打下扎实的基本功,推荐你读读这本书。 ——姚晓光(NPC6),腾讯游戏琳琅夭上工作室总经理 这是我见过的Windows游戏编程方面最好的一本书。如果你连游戏编程是什么都不知道,还想要了解如何开发游戏,甚至想要从事游戏开发工作,请一定不要错过这本书。本书对于理论和实践的把握都很到位! ——史晓明(polyrandom),BigWorld高级软件工程师
媒体推荐
《Windows游戏编程大师技巧(第2版)》堪称是众多游戏开发人员的启蒙经典。作者André LaMothe是把复杂问题简单化讲解方面的大师。时至今日,书中的游戏基础知识和理论、开发技巧,涉及到游戏开发方方面面的核心问题等,仍然很有阅读参考的价值。沙鹰的译本也很准确可靠,得到了读者的认同。如果你想在游戏开发方面打下扎实的基本功,推荐您读读这本书。 ——腾讯游戏琳琅天上工作室总经理 姚晓光(NPC6) 这是我见过的Windows游戏编程方面最好的一本书。如果你连游戏编程什么都不知道,还想要了解如何开发游戏,甚至想要从事游戏开发工作,请一定不要错过这本书。本书对于理论和实践的把握都很到位! ——BigWorld高级软件工程师 史晓明(polyrandom)
作者简介
《Windows游戏编程大师技巧(第2版)》作者Andre LaMothe有25年的计算行业从业经验,拥有数学、计算机科学和电子工程等学位,是20岁时就在NASA做研究工作的少数几人之一。作者Andre LaMothe的著作以及参与策划的套系,都成为游戏设计和开发领域的经典。
目录
第一部分 Windows编程基础 第1章 学海无涯 2 1.1 历史一瞥 2 1.2 设计游戏 5 1.3 游戏类型 5 1.4 集思广益 6 1.5 设计文档和情节串联图板 6 1.6 使游戏具有趣味性 7 1.7 游戏的构成 7 1.8 常规游戏编程指导规范 11 1.9 使用工具 14 1.10 从准备到完成——使用编译器 15 1.11 示例:FreakOut 17 1.12 小结 30 第2章 Windows编程模型 31 2.1 Windows的起源 31 2.1.1 早期版本的Windows 31 2.1.2 Windows3.x 32 2.1.3 Windows95 32 2.1.4 Windows98 33 2.1.5 WindowsME 33 2.1.6 WindowsXP 33 2.1.7 WindowsNT/2000 33 2.1.8 Windows基本架构:Win9X/NT 34 2.2 多任务和多线程 34 2.2.1 获取线程的信息 34 2.2.2 事件模型 36 2.3 按照微软风格编程:匈牙利符号表示法 37 2.3.1 变量的命名 38 2.3.2 函数的命名 38 2.3.3 类型和常量的命名 38 2.3.4 类的命名 38 2.3.5 参数的命名 39 2.4 世界上最简单的Windows程序 39 2.4.1 总是从WinMain()开始 40 2.4.2 程序剖析 41 2.4.3 选择一个信息框 42 2.5 现实中的Windows应用程序 44 2.6 Windows类 45 2.7 注册Windows类 50 2.8 创建窗口 50 2.9 事件处理程序 52 2.10 主事件循环 57 2.11 产生一个实时事件循环 60 2.12 打开多个窗口 61 2.13 小结 63 第3章 高级Windows编程 64 3.1 使用资源 64 3.1.1 整合资源 66 3.1.2 使用图标资源 66 3.1.3 使用光标资源 68 3.1.4 创建字符串表资源 71 3.1.5 使用WAV声音资源 73 3.1.6 使用编译器创建.RC文件 76 3.2 使用菜单 77 3.2.1 创建菜单 77 3.2.2 装载菜单 79 3.2.3 响应菜单事件消息 82 3.3 GDI(图形设备接口)简介 86 3.3.1 重拾WM_PAINT信息 86 3.3.2 视频显示基础和色彩(VideoDisplay Basicsand Color) 90 3.3.3 RGB和调色板模式 91 3.3.4 基本文本显示 92 3.4 处理重要事件 97 3.4.1 Windows操作 97 3.4.2 处理键盘事件 101 3.4.3 处理鼠标事件 107 3.5 自行发送消息 109 3.6 小结 111 第4章 WindowsGDI、控件和灵感 112 4.1 高级GDI绘图 112 4.1.1 掀开图形设备描述表的盖头来 112 4.1.2 颜色、画笔和画刷 113 4.1.3 使用画笔 114 4.1.4 使用画刷 116 4.2 点、线、平面多边形和圆 117 4.2.1 绘制点 118 4.2.2 绘制线段 119 4.2.3 绘制矩形 120 4.2.4 绘制圆 122 4.2.5 绘制多边形 123 4.3 深入文本和字体 124 4.4 定时高于一切 125 4.4.1 WM_TIMER消息 125 4.4.2 低层定时操作 127 4.5 使用控件 130 4.5.1 按钮 131 4.5.2 向子控件发送消息 133 4.6 获取信息 136 4.7 T3D游戏控制台程序 141 4.8 小结 145 第二部分 DirectX和2D基础 第5章 DirectX基础知识和令人生畏的COM 148 5.1 DirectX基础 148 5.1.1 HEL和HAL 150 5.1.2 更多的DirectX基础类 151 5.2 COM:是微软的杰作,还是魔鬼的杰作 153 5.2.1 COM对象究竟是什么 154 5.2.2 接口标识符和GUID的详细内容 156 5.2.3 创建一个类COM对象 157 5.2.4 COM的简要回顾 158 5.2.5 可运行的COM程序 159 5.3 应用DirectXCOM对象 162 5.3.1 COM和函数指针 163 5.3.2 创建和使用DirectX界面 166 5.3.3 接口查询 167 5.4 COM的前景 168 5.5 小结 169 第6章 初次邂逅DirectDraw 170 6.1 DirectDraw的接口 170 6.1.1 接口的特性 170 6.1.2 组合使用接口 172 6.2 创建DirectDraw对象 173 6.2.1 对DirectDraw进行错误处理 173 6.2.2 顺便提一下接口 174 6.3 与Windows协作 177 6.4 设置模式 180 6.5 色彩的奥秘 182 6.6 创建显示表面 185 6.6.1 创建一个主显示表面 186 6.6.2 关联调色板 192 6.6.3 绘制像素 192 6.6.4 清理资源 201 6.7 小结 202 第7章 高级DirectDraw和位图图形 203 7.1 使用高彩模式 203 7.1.1 16位高彩模式 204 7.1.2 获取像素格式 205 7.1.3 24/32位真彩色模式 211 7.2 双缓冲 213 7.3 表面动态 217 7.4 页面切换 220 7.5 显存块移动单元(Blitter) 225 7.5.1 使用Blitter进行内存填充 227 7.5.2 从一个表面向另一个表面复制位图 232 7.6 基础裁剪知识 235 7.6.1 将像素按视口裁剪 235 7.6.2 位图裁剪技巧 236 7.6.3 使用IDirectDrawClipper进行DirectDraw裁剪 241 7.7 使用位图 245 7.7.1 载入.BMP文件 245 7.7.2 使用位图 250 7.7.3 载入8位位图 251 7.7.4 载入16位位图 252 7.7.5 载入24位位图 252 7.7.6 总结位图 253 7.8 离屏表面 253 7.8.1 创建离屏表面 253 7.8.2 在离屏表面上进行Blitting 254 7.8.3 设置Blitter 255 7.8.4 色彩键 255 7.8.5 源色彩键 256 7.8.6 目标色彩键 258 7.8.7 使用Blitter(终于!) 259 7.9 位图的旋转和缩放 260 7.10 离散采样理论 261 7.11 色彩效果 265 7.11.1 256色模式下的色彩动画 265 7.11.2 256色模式下的色彩旋转 270 7.11.3 使用RGB模式的技巧 271 7.12 手动色彩变换及查询表 272 7.13 新的DirectX色彩和Gamma控制接口 272 7.14 将GDI和DirectX联用 273 7.15 DirectDraw的庐山真面目 275 7.15.1 主DirectDraw对象 275 7.15.2 关于表面 277 7.15.3 使用调色板 277 7.16 在窗口模式下使用DirectDraw 278 7.17 小结 285 …… 第三部分 核心游戏编程 第四部分 附录
文摘
版权页: 插图: 在DirectX 8.0版本里,Microsoft决定将DirectDraw和Direct3D紧密地集成到一起,总称为DirectXGraphics。结果就是DirectDraw在8.0版本里被移除了,不过,你仍然可以使用DirectDraw,在DirectX8.0版本中并没有将它升级。另外,DirectSound和DirectMusic也被紧密地集成,从而成为现在的DirectXAudi0。最后,DirectShow(来自以前的DirectMedia)现在也已经被集成到DirectX里。Microsoft那些家伙可真是有够忙活的! 上面说的这些有点过于庞杂和令人费解了,但是DirectX有一点非常好,那就是通过COM(我们很快会熟悉它的),使用者实际可以按照需要来决定究竟使用DirectX 3.0、5.0、6.0或是其他任何版本。对于本书而言,使用7.0版本和8.0版本就已经绰绰有余了。此外,如果你了解DirectX的其中一个版本的话,你就能一通百通地了解其他所有版本。尽管语法上可能有些微小的变化,界面也有些细微差别,但是总的来说,它们还是一样的。只有Direct3D是惟一有很大改动的部分,我们在本书中不做该方面的阐述,实际上,我们将重点讨论的是游戏编程的内容。虽然,在CD里有两本关于3D的书,其中有一本就是讲Direct3D的,但是在本书中,我们不会涉及太多DirectX的内容,所以你只要学习有关游戏制作的那部分就足够了。但是,毕竟你的整个游戏编程生涯并不会与DirectX绑在一起,如果你使用的是其他的API(应用编程接口),你仍然可以理解游戏编程的基础技术,这才是本书的终极目标。 5.1.1 HEL和HAL 在图5—2里,你会发现在DirectX的下面有两个层分别叫做HEL(Hardware Emulation Layer,硬件仿真层)和HAL(HardwareAbstraction Layer,硬件抽象层)。原理是这样的:DirectX是一种具有前瞻性的设计思路,它假定那些高级功能将由硬件实现。但是,如果硬件并不支持其中某些功能特性,那又该如何处理呢?这就是HAL和HEL双重模式的基本设计思路。 HAL,也就是硬件抽象层,是直接和硬件对话的一层。HAL是一种设备驱动程序,通常由设备生产商提供,你可以通过常规DirectX调用直接和它进行通信。条件是,只有当硬件能够直接支持你所要求执行的功能的时候HAL才被使用,从而达到加速的效果。例如,当你要求绘制一个位图的时候,硬件数据块复制器(Blitter)能迅速完成这个任务,比软件循环要高效得多。 HEL,也就是硬件仿真层,运用于当硬件不支持你所要求的性能的时候。比方说,当你要求视频卡完成位图旋转,如果硬件不支持旋转这个功能,HEL就会加入,通过软件运算来完成该项任务。显然,这么处理速度较慢,但是关键是,这样就不会因为硬件不支持而影响你的应用程序。程序依然可行,只是慢一点而已。另外,HAL和HEL之间的切换对用户而言是透明的。
ISBN
出版社人民邮电出版社
作者拉莫斯 (André LaMothe)
尺寸16