内容简介目录内容提要本书全面地介绍了使用Visual C++/DirectX9开发3D游戏的基本方法和步骤。全书共分为21章,主要内容包括Win32 API编程、3D游戏中的数学基础、各种3D渲染原理及其实现技术、DirectInput输入处理和DirectSound声效处理等。另外,对四元数的数学构造、骨骼动画的原理和实现,以及四叉树细节层级地形等其他同类书中很少提及的内容,本书都给出了十分详细的阐述和分析。配套光盘中提供了书中实例的完整工程文件和全部源代码,以方便读者编译、调试,巩固所学知识。本书面向于游戏开发人员,同时也可作为高等院校相关专业和培训机构的游戏课程用书。 目 录第1章 C/C++基础回顾 11.1 浅谈编程行为 11.2 程序结构和分割编译 41.3 编译预处理指令 51.4 程序的注释 71.5 变量的使用 71.6 函数的使用 91.7 指针和引用 101.8 流程控制语句 131.9 结构体和联合体 161.10 用类封装模块 181.11 类的继承 211.12 函数的重载、覆盖和隐藏 221.13 访问权限 231.14 本章小结 24第2章 Win32 API编程基础 252.1 基于回调的Windows程序运行机制 252.2 一个简单的Windows示例程序 262.3 WinMain函数及读取消息的循环体 322.4 注册窗口类 352.5 创建应用程序窗口实例 382.6 回调的窗口过程函数 392.7 编译和调试程序 432.8 匈牙利变量命名方法 452.9 本章小结 46第3章 DirectX 3D游戏开发入门 473.1 三维物体的基本成像流程 473.1.1 世界坐标系的引入 483.1.2 摄影坐标系的引入 493.1.3 剪裁和透视投影 513.1.4 视口变换和像素的光栅显示 523.2 光栅显示器的基本原理 543.3 显示卡的3D渲染管道线 553.4 浅谈COM组件技术 563.4.1 直接调用C++类的函数 573.4.2 将C++类打包成DLL提供调用 593.4.3 利用抽象基类改进C++类 613.5 DirectX 9.0的安装和配置 643.6 本章小结 67第4章 3D游戏中的数学基础 684.1 向量 684.1.1 向量相加 704.1.2 向量相减 714.1.3 向量的标量乘法 724.1.4 向量长度的计算 734.1.5 向量的单位化 744.1.6 向量的点积 754.1.7 向量的叉积 764.2 矩阵 784.2.1 矩阵的基本运算 804.2.2 矩阵的求逆 824.2.3 矩阵的转置 844.3 坐标变换 854.3.1 平移变换 864.3.2 放大缩小变换 894.3.3 旋转变换 904.4 平面 944.4.1 三点确定一个平面 944.4.2 直线与平面的交点 964.4.3 点和平面的位置关系 974.4.4 平面的单位化 984.5 四元数 994.5.1 四元数的数学史 994.5.2 复数的符合逻辑的定义 994.5.3 复数的高维推广:四元数 1004.5.4 四元数在旋转变换中的应用 1014.6 DirectX中的一些具体数学问题的计算 1044.6.1 世界坐标系到摄影坐标系的变换 1044.6.2 齐次剪裁透视投影变换 1064.6.3 视截体的平面计算 1074.6.4 透视投影空间到屏幕视口的变换 1114.7 本章小结 113第5章 键盘、鼠标和游戏杆的输入处理 1145.1 配置DirectInput的动态链接库 1145.2 创建DirectInput接口对象 1155.3 使用DirectInput接口函数 1175.4 设置DirectInput设备的数据格式 1185.5 设置DirectInput设备的协调级别 1195.6 获取输入设备的访问权 1205.7 设置DirectInput设备的属性 1205.8 读取键盘的输入 1225.9 读取鼠标的输入 1285.10 读取游戏杆的输入 1375.11 本章小结 147第6章 游戏框架、输入和时钟引擎类 1486.1 游戏框架类CGameEngine_App 1486.2 输入类CGameEngine_Input 1516.3 时钟类CGameEngine_Timer 1596.4 本章小结 163第7章 基本三角形面的绘制 1647.1 DirectX Graphics基本应用架构 1647.2 创建IDirect3D9接口对象 1667.3 创建Direct3D设备 1667.4 创建顶点缓冲区 1707.5 启动管道流水线进行渲染 1737.6 实例:绘制一个基本的三角形面 1757.7 本章小结 179第8章 基本立体面的绘制 1808.1 3D原始类型 1808.2 顶点顺序和背面剔除 1818.3 顶点索引缓冲区 1838.4 在世界坐标系中放置物体 1868.5 架设摄影机进行取景和投影 1878.6 屏幕视口的设置 1888.7 实例:绘制一个基本的立体面 1898.8 本章小结 196第9章 材质和光照处理 1979.1 颜色与光照 1979.2 光源设置 2009.2.1 点光源 2019.2.2 聚焦光源 2029.2.3 方向光源 2039.2.4 环境光 2049.3 材质设置 2049.4 顶点的法向量 2059.5 实例:点光源渲染 2079.6 本章小结 214第10章 纹理贴图 21510.1 顶点的纹理坐标 21510.2 创建纹理对象 21610.3 纹理过滤技术 21710.4 纹理地址模式 21910.5 实例:纹理贴图 22610.6 本章小结 234第11章 Alpha颜色混合 23511.1 颜色混合原理 23511.2 Alpha颜色混合例子 23711.3 利用ID3DXSprite实现颜色透明 24211.4 利用Alpha测试实现颜色透明 24811.5 本章小结 254第12章 XFile网格的应用 25612.1 .x文件的基本格式 25612.2 .x文件的数据装入 26212.3 Mesh数据的处理 26412.4 Mesh数据的优化 26712.5 实例:.x文件的网格渲染 26912.6 本章小结 275第13章 骨骼动画的实现 27613.1 骨骼动画的基本原理 27613.2 .x文件的动画格式 27913.3 .x文件动画数据的装入 28413.4 骨骼蒙皮的渲染 29213.5 实例:骨骼动画的实现 30013.6 本章小结 308第14章 视点相关的LOD地形渲染 31014.1 地形高度图 31014.2 地表的四叉树分割 31214.3 视点距离相关的细节层级判别 31914.4 地形节点的渲染 32614.5 规范节点的分割 33514.6 实例:LOD地形渲染 33814.7 本章小结 346第15章 基本3D渲染引擎类 34715.1 场景管理类CGameEngine_SceneManager 34715.2 纹理处理类CGameEngine_Texture 35715.3 顶点处理类CGameEngine_VertexBuffer 35915.4 光照处理类CGameEngine_Light 36315.5 材质处理类CGameEngine_Material 36615.6 本章小结 368第16章 天空和广告牌技术 36916.1 矩形面天空 36916.2 球面天空 37816.3 广告牌技术 38616.4 本章小结 391第17章 雾化处理 39217.1 雾化原理 39217.2 雾化融合 39317.3 雾化颜色 39417.4 选择雾化模式 39417.5 顶点雾化 39417.6 像素雾化 39717.7 本章小结 398第18章 文字和能量格渲染 39918.1 ID3DXFont接口的应用 39918.2 字体引擎类CGameEngine_Font 40018.3 能量格引擎类CGameEngine_EnergyBar 40418.4 实例:文字和能量格渲染 40818.5 本章小结 414第19章 粒子系统 41519.1 用Point Sprite实现粒子 41519.2 粒子引擎类CGameEngine_Particle 41719.3 实例:爆炸粒子渲染 42519.4 本章小结 427第20章 Stencil蒙板阴影处理 42820.1 Stencil蒙板缓冲区 42820.2 平面阴影计算 43120.3 实例:平面阴影渲染 43320.4 ShadowMap阴影映射图技术 44320.5 ShadowVolume阴影体技术 44520.6 本章小结 448第21章 DirectSound声音播放 44921.1 声音的播放原理 44921.2 创建IDirectSound8对象 45121.3 设置设备的协调级别 45121.4 Primary主缓冲区的创建 45221.5 Secondary次缓冲区的创建 45421.6 装入声音数据到次缓冲区 45721.7 声音的播放与控制 45821.8 CGameEngine_Sound声音引擎类 46021.9 实例:DirectSound的声音渲染 46621.10 3D声效的使用 46821.11 本章小结 472