3d游戏编程大师技巧pdf完整版|百度网盘下载

编辑点评:3D游戏编程大师技巧pdf

3D Game Programming Master Tips 是畅销游戏编程作者 André LaMothe 的代表作,从游戏编程和软件引擎的角度对 3D 图形中的重要话题进行了深入探讨。全书共分5篇,共16章内容,感兴趣的朋友快来下载吧

简介

3D Game Programming Master Tips 是畅销游戏编程作者 André LaMothe 的代表作,从游戏编程和软件引擎的角度对 3D 图形中的重要话题进行了深入探讨。全书分为5个部分,包括16章。

第 1-3 章简要介绍了 Windows 和 DirectX 编程,创建了一个 Windows 应用程序模板,让读者可以专注于游戏逻辑和图形实现,而不是 Windows 和 DirectX 琐事;

第4-5章简要介绍了一些数学,并实现了一个数学库,供以后编写演示程序时使用;第 6 章提供 3D 图形概述,并为读者提供 CD-ROM)",以便对将要介绍的内容有一个大致的了解;

第 7-11 章分别介绍了光照、着色、仿射纹理映射、3D 裁剪和深度缓冲;第 12-14 章讨论高级 3D 渲染技术,包括透视校正纹理映射、alpha 混合、1/z 缓存、纹理过滤、空间分区和可见性算法、阴影、光照映射等;第 15-16 章讨论动画、运动碰撞检测和优化技术。

《3D游戏编程大师技能》适合有一定编程经验,想从事游戏编程或对3D图形感兴趣的人。

相关内容部分预览

目录

第 1 部分 3D 游戏编程简介
第 1 章 3D 游戏编程简介 2
1.1 简介 2
1.2 2D/3D 游戏的元素 3
1.2.1 初始化 3
1.2 . 2 进入游戏循环 3
1.2.3 读取玩家输入 4
1.2.4 执行 AI 和游戏逻辑 4
1.2.5 渲染下一帧 4
1.2.6 同步显示 4
1.2 .7 循环 4
1.2.8 关机 5
1.3 通用游戏编程指南 7
1.4 使用工具 9
1.4.1 3D 关卡编辑器 12
1.4.2 使用编译器 13
1.5 3D 游戏示例:攻略 3D 15
1.5.1 事件循环 33
1.5.2 核心 3D 游戏逻辑 34
1.5.3 3D 投影 35
1.5.4 星空 36
1.5.5 激光炮和碰撞检测 37
1.5.6 爆炸 37
1.5.7 玩攻略 37
1.6 总结 37
第 2 章 Windows 和 DirectX 短教程 38
2.1 Win32编程模型 38
2.2 Windows 程序的最低要求 39
2.3 基本的 Windows 应用程序 43
2.3.1 Windows 类 43
2.3.2 注册 Windows 类 47
2.3. 3 创建窗口 47
2.3.4 事件处理程序 48
2.3.5 主事件循环 52
2.3.6 构建实时事件循环 55
2.4 DirectX 和 COM 简短教程 56< br>2.4、 1 HEL 和 HAL 57
2.4.2 DirectX 基本类 58
2.5 COM 简介 59
2.5.1 什么是 COM 对象 60
2.5.2 创建和使用 DirectX COM 接口 61
2.5 .3 查询接口 62
2.6 总结 64
第 3 章使用虚拟计算机编程 3D 游戏 65
3.1 虚拟计算机接口介绍 65
3.2 建立虚拟计算机接口 66
3.2.1帧缓存和视频系统 66
3.2.2 使用颜色 70
3.2.3 缓存交换 71
3.2.4 完整的虚拟图形系统 73
3.2.5 I/O、声音和音乐 73< br>3、 3 T3DLIB 游戏机 74
3.3.1 T3DLIB 系统概述 74
3.3.2 基本游戏机 74
3.4 T3DLIB1 库 79
3.4.1 DirectX 图形引擎架构 79
3.4 .2 基本常量 79
3.4.3 工作宏 81
3.4.4 数据类型和结构 81
3.4.5 函数原型 84
3.4.6 全局变量 88
3.4.7 DirectDraw 接口 89< br>3.4.8 2D 多边形函数 92
3.4.9 数学和误差函数 97
3.4.10 位图函数 99
3.4.11 8 位调色板函数 102
3.4.12 实用函数 104
3.4.13 BOB(Blitter Object)引擎 106
3.5 T3DLIB2 DirectX 输入系统 112
3.6 T3DLIB3 声音和音乐库 116
3.6.1 标题 117
3.6.2 类型 117
3.6.3 全局变量 117
3.6.4 DirectSound API 包装器 118
3.6.5 DirectMusic API 包装器 121
3.7 构建最终的 T3D 游戏控制台 124
3.7.1 将真实图形映射到非虚拟接口的真实图形 124
3.7.2 最终 T3DLIB 游戏控制台 126
3.8 示例 T3LIB 应用程序 134
3 .8.1 窗口应用程序 134
3.8.2 全屏应用程序 135
3.8.3 声音和音乐 136
3.8.4 处理输入 136
3.9 总结 139
第二部分 3D 数学和变换
br>第 4 章 三角函数、向量、矩阵和四元数 142
4.1 数学符号 142
4.2 二维坐标系 143
4.2.1 二维笛卡尔坐标 143
4.2.2 二维极坐标 144
4.3 3D 坐标 147
4.3.1 3D 笛卡尔坐标 147
4.3.2 3D 圆柱坐标 149
4.3.3 3D 球坐标 150
4.4 三角函数 151
4.4.1 直角三角形151
4.4.2 反三角函数 153
4.4.3 三角恒等式 153
4.5 向量 154
4.5.1 向量长度 155
4.5.2 归一化 155
4.5.3 向量和标量乘法 155
4.5.4 向量加法 156
4.5.5 向量减法 157< br>4.5.6 点积 157
4.5.7 叉积 159
4.5.8 零向量 160< br>4.5.9 位置和位移向量 160
4.5.10 向量表示由线性组合 161
4.6 矩阵和线性代数 161
4.6.1 单位矩阵 162
4.6.2 矩阵加法 163
4.6.3 矩阵转置 163
4.6.4 矩阵乘法 164
4.6.5 矩阵运算满足的定律 165
4.7 逆矩阵和方程的求解系统 165
4.7.1 克莱姆定律 167
4.7.2 使用矩阵的变换 168
4.7.3 齐次坐标 169
4.7.4 应用矩阵变换 170
4.8 基本几何实体 176
4.8.1 点 176
4.8.2 线 176
4.8.3 平面 179
4.9 使用参数参数化方程 182
4.9.1 2D 参数线 182
4.9.2 3D 参数线 184
4.10 四元数介绍 189
4.10.1 复数理论 189
4.10.2 超复数193
4.10.3 四元数应用 197
4.11 总结 200
第 5 章 构建数学引擎 201
5.1 数学引擎概述 201
5.1.1 数学引擎文件结构 201
5.1. 2 命名规则 202
5.1.3 错误汉dling 203
5.1.4 关于 C++ 的最终说明 203
5.2 数据结构和类型 203
5.2.1 向量和点 203< br>5.2.2 参数线 204
5.2.3 3D 平面 206
5.2.4 矩阵 206
5.2.5 四元数 209
5.2.6 角坐标系支持 210
5.2.7 2D 极坐标 210
5.2.8 3D 圆柱坐标 211
5.2.9 3D 球坐标 211
5.2.10 定点数 212
5.3 数学常数 213
5.4 宏和内部链接函数 214
5.4.1 通用宏 218
5. 4.2 点和向量宏 218
5.4.3 矩阵宏 219
5.4.4 四元数 220
5.4.5 定点宏 221
5.5 函数原型 221
5.6 全局变量 224< br >5.7 数学引擎 API 列表 225
5.7.1 三角函数 225
5.7.2 坐标系支持函数 226
5.7.3 向量支持函数 228
5.7.4 矩阵支持函数 235
5.7.5 2D 和 3D 参数线支持函数 245
5.7.6 3D 平面支持函数 248
5.7.7 四元数支持函数 252
5.7.8 定点支持函数 259
5.7.9 方程求解支持函数 263
5.8 浮点单元操作初步 265
5.8.1 FPU 架构 266
5.8.2 FPU 堆栈 266
5.8.3 FPU 指令集 268
5.8.4 经典指令格式 270
5.8.5 内存指令格式 271
5.8.6 寄存器指令格式 271
5.8.7 寄存器弹出指令格式 271
5.8.8 FPU 示例 271
5.8.9 FLD 示例272
5.8.10 FST 示例 272
5.8.11 FADD E xample 273
5.8.12 FSUB 示例 275
5.8.13 FMUL 示例 276
5.8.14 FDIV 示例 278
5.9 数学引擎指令 279
5.10 数学优化指令 280
5.11总结 280
第 6 章 3D 图形简介 282
6.1 3D 引擎原理 282
6.2 3D 游戏引擎架构 282
6.2.1 3D 引擎 283
6.2.2 游戏引擎 283
6.2.3 输入系统和网络 284
6.2.4 动画系统 284
6.2.5 碰撞检测和导航系统 287
6.2.6 物理引擎 288
6.2.7 人工智能系统 289
6.2.8 3D 模型和图像数据库 289
6.3 3D 坐标系 291
6.3.1 模型(局部)坐标 291
6.3.2 世界坐标 293
6.3.3 相机坐标 296
6.3.4 摄像机坐标说明 302
6.3.5 隐藏对象(人脸)移除与裁剪 303
6.3.6 透视坐标 308
6.3.7 管线终点:屏幕坐标 315
6.4基本 3D 数据结构 321
6.4.1 表示 3D 多边形数据需要考虑的问题 322
6.4.2 定义多边形 323
6.4.3 定义对象 327
6.4.4 表示世界 330
6.5 3D 工具 331
6.6 从外部加载数据 332
6.6.1 PLG 文件 333
6.6.2 NFF 文件 335
6.6.3 3D Studio 文件 338
6.6.4 Caligari COB 文件 343
6.6.5 Microsoft DirectX .X 文件 345
6.6.6 3D 文件格式总结 345
6.7 基本刚性变换和动画 345
6.7.1 3D 平移 345
6.7.2 3D 旋转 346
6.7.3 3D 变形 347
6.8 看在观测管道 348
6.9 3D 引擎类型 349
6.9.1 空间引擎 349
6.9.2 地形引擎 350
6.9.3 FPS 室内引擎 351
6.9.4 光线投射和体素引擎 352
6.9.5 混合引擎 353
6.10 将各种功能集成到引擎中 353
6.11 总结 353
第 7 章 渲染 3D 线框世界 354
7.1 Wire 盒子的整体架构引擎 354
7.1.1 数据结构和 3D 管道 355
7.1.2 主多边形列表 357
7.1.3 Ne w 软件模块 359
7.2 编写 3D 文件加载器 359
7.3 构建 3D 管道 367
7.3.1 通用变换函数 367
7.3.2 局部到世界变换 372
7.3.3 Euler相机型号 375
7.3.4 UVN 相机型号 377
7.3.5 世界到相机转换 387
7.3.6 对象剔除 390
7.3.7 背面消除 393
7.3.8 相机到透视变换 395
7.3 .9 透视到屏幕(视口)坐标变换 399
7.3.10 结合透视和屏幕变换 403
7.4 渲染 3D 世界 405
7.5 3D 演示 408
7.5、 1 单个 3D 三角形 408
7.5.2 3D 线框立方体 411
7.5.3 消除背面的 3D 线框立方体 413
7.5.4 3D 坦克演示 414
7.5.5 3D 坦克演示与相机移动416
7.5.6 战区步行演示 418
7.6 总结 421
第 3 部分基本 3D 渲染
第 8 章基本照明和实体建模 424
8.1 计算机图形学的基本照明模型 424
8.1.1 颜色模型和材料 426
8.1.2 光照类型 432
8.2 三角形的光照计算和光栅化 437
8.2 .1 光照准备 441
8.2.2 定义材质 442
8.2.3 定义光照 445
8.3 真实世界着色 449
8.3.1 16 位着色 449
8.3、 2 8 位着色 450
8.3.3 8 位模式的稳健 RGB 模型 450
8.3.4 8 位模式的简化强度模型 453
8.3.5 固定着色 457
8.3.6 常量着色 459
8.3.7 Gouraud 着色概述 472
8.3.8 Phong 着色概述 474
8.4 深度排序和 Painter 算法 475
8.5 使用新模型格式 479
8.5 .1 Analyzer Class 479
8.5.2 Helper Functions 482
8.5.3 3D Studio MAX ASCII Format.ASC 484
8.5.4 TrueSpace ASCII.COB Format 486
8.5.5 Quake II Binary . MD2 格式概述 494
8.6 3D 建模工具介绍 495
8.7 总结 497
第 9 章插值着色技术和仿射纹理映射 498
9.1 新 T3D 引擎的功能 498
9.2 更新的 T3D数据结构和设计 499
9.2.1 新 #defines 499
9.2.2 添加数学结构 501
9.2.3 实用程序 502
9.2.4 添加 3D 网格数据的表示功能 503
9.2.5 更新对象结构和渲染列表结构 508
9.2.6 功能n 列表和原型 511
9.3 重写对象加载函数 517
9.3.1 更新 .PLG/PLX 加载函数 517
9.3.2 更新 3D Studio .ASC 加载函数 527
9.3.3 更新 Caligari .COB 加载函数 528
9.4 审查多边形光栅化 532
9.4、 1 三角形的光栅化 532
9.4.2 填充规则 535
9.4.3 裁剪 537
9.4.4 新的三角形渲染功能 538
9.4.5 优化 542
9.5 实现 Gouraud 着色处理 543
9.5.1 没有光照的 Gouraud 着色 544
9.5.2 使用 Gouraud 着色器对多边形执行光照计算 553
9.6 基本采样理论 560
9.6.1 一维空间采样 560
9.6. 2 双线性插值 561
9.6.3 u 和 v 插值 563
9.6.4 实现仿射纹理映射 564
9.7 更新光照/光栅化引擎以支持纹理 566
9.8 关于优化策略的最终思考8 位和 16 位模式 571
9.8.1 查找表 571
9.8.2 网格的顶点关联性 572
9.8.3 存储计算结果 572
9.8.4 SIMD 573
9.9 最终演示 573
9.10 总结 576
第 10 章 3D 裁剪 577
10.1 裁剪简介 577
10.1.1 对象空间裁剪 577
10.1.2 图像空间裁剪 580
10.2种植藻类算法 581
10.2.1 裁剪基础 581
10.2.2 Cohen-Sutherland 裁剪算法 585
10.2.3 Cyrus-Beck /Liang Youdong-Barsky 裁剪算法 586
10.2.4 Weiler-Atherton裁剪算法 588
10.2.5 深度学习裁剪算法 590
10.3 实现视图体积裁剪 591
10.3.1 几何管道和数据结构 592
10.3.2 引擎添加裁剪功能 593
10.4 地形讨论 611
10.4.1 地形生成函数 612
10.4.2 生成地形数据 619
10.4.3 沙地车演示 619
10.5 总结 623
第11章深度缓冲区和可见性 624
11.1 深度缓冲区和可见性简介 624
11.2 z-buffer 基础知识 626
11.2.1 z-buffer 问题 627
11.2.2 z-buffer 示例 627
11.2.3平面方程 方法 630
11.2.4 z 坐标插值 631
11.2.5 z 缓冲区和 1/z 缓冲区中的问题 632
11.2.6 通过插值计算 z 和 1/z 的示例 633
11.3 创建 z-cache 系统 635
11.4 P可能的 z-cache 优化 649
11.4.1 使用更少的内存 649
11.4.2 降低刷新 z-cache 的频率 650
11.4.3 混合 z-cache 651
11.5 z 的问题-cache 651
11.6 软件和 z-cache 演示 652
11.6.1 演示 I:z-cache 可视化 652
11.6.2 演示 II:Wave Raider 653< br>11.7 总结 658
部分IV 高级 3D 渲染
第 12 章高级纹理映射技术 660
12.1 纹理映射 - 第二波 660
12.2 新的光栅化函数 667
12.2.1 最终决定使用固定点 667
12.2、 2 不带 z 缓冲区的新光栅化功能 668
12.2.3 带 z 缓冲区支持的新光栅化功能 670
12.3 带 Gouruad 着色的纹理映射 671
12.4 透明度和 alpha 混合 677
12.4.1 使用用于 Alpha 混合的查找表 678
12.4.2 支持对象级别的 Alpha 混合 688
12.4.3 添加到地形生成功能
Alpha 支持 694
12.5 透视校正纹理映射和 1/z 缓冲区696
12.5.1 透视纹理映射的数学基础 696
12.5.2 将 1/z 缓冲区添加到光栅化函数 702
12.5.3 实现完美的透视校正纹理映射 707
12.5.4 实现线性分段透视校正纹理映射 710
12.5.5 透视校正纹理映射的二次逼近 714
12.5.6 使用混合方法优化纹理映射 718
12.6 双线性纹理过滤 719
12.7 Mipmapping 和三线性纹理过滤 724
12.7.1 傅里叶分析和混叠简介 725
12.7.2 创建 Mip 纹理链 727
12.7.3 选择 Mip 纹理 734
12.7.4 三线性过滤 739
12.8 多重渲染和纹理映射740
12.9 使用单个函数进行渲染 741
12.9.1 新建 RenderContext 741
12.9.2 设置 RenderContext 743
12.9.3 调用渲染函数 745
12.10 总结 753
第 13 章空间划分和可见性算法 754
13.1 新 G ame 引擎模块 754
13.2 空间分区和可见表面确定简介 754
13.3 二进制空间分区 757
13.3.1 轴平行二进制空间分区 758
13.3.2 任意平面空间分区 759< br>13.3.3 使用多边形所在平面划分空间 760
13.3.4 显示/访问 BSP 树中的每个节点 762
13.3 .5 BSP 树数据结构和支持函数 763
13.3.6创建 BSP 树 765
13.3.7 分区策略 767
13.3.8 遍历和显示 BSP 树 775
13.3.9 集成到图形管道 784
13.3.10 BSP 级别编辑器 785
13.3.11 BSP 793 的局限性
13.3.12 使用 BSP 树的零重绘策略 794
13.3.13 将 BSP 树用于剔除 795
13.3.14 使用 BSP 树进行碰撞检测 802
13.3. 15 集成 BSP 树和标准渲染 802
13.4 潜在可见集 807
13.4.1 使用潜在可见集 808
13.4.2 潜在可见集的其他编码方法le Sets 809
13.4.3 流行的 PVS 计算方法 810
13.5 条目 811
13.6 包围体层次结构和八叉树 813
13.6.1 使用 BHV 树 815
13.6.2 运行性能 816< br>13.6.3 选择策略 817
13.6.4 实施 BHV 818
13.6.5 八叉树 825
13.7 遮挡剔除 825
13.7.1 掩码 826
13.7.2 选择掩码 826< br>13.7.3 混合蒙版选择方法 827
13.8 总结 827
第 14 章阴影和灯光照片映射 828
14.1 新游戏引擎模块 828
14.2 概述 828
14.3 简化阴影物理 829< br>14.4 使用透视图像和广告牌模拟阴影 832
14.4.1 书面启用透明的光栅化函数 833
14.4.2 新库模块 835
14.4.3 简单阴影 837
14.4.4缩放阴影 839
14.4.5 跟踪灯 841
14.4 .6 关于模拟阴影的最终想法 844
14.5 平面网格阴影映射 845
14.5.1 计算投影变换 845
14.5.2 优化平面阴影 84 8
14.6 光照贴图和人脸缓存技术介绍 848
14.6.1 表面缓存技术 850
14.6.2 生成光照贴图 850
14.6.3 实现光照贴图功能 851
14.6. 4 暗映射 853
14.6、 5 光照贴图效果 854
14.6.6 优化光照贴图代码 854
14.7 组织想法 854
14.8 总结 854
第 5 部分高级动画、物理建模和优化
第 15 章 3D 角色动画、运动和碰撞检测 858
15.1 新游戏引擎模块 858
15.2 3D 动画简介 858
15.3 Quake II .MD2 文件格式 859
15.3.1 .MD2 文件头 861
15.3. 2 加载 Quake II .MD2 文件 868
15.3.3 使用 .MD2 文件的动画 874
15.3.4 .MD2 演示器 882
15.4 简单的非基于字符的动画 883
15.4 .1 旋转和平移运动 883
15.4.2 复杂参数曲线运动 885
15.4.3 使用脚本实现运动 885
15.5 3D 碰撞检测 887
15.5.1 边界球和边界圆柱体 887
15.5 .2 使用数据结构加速碰撞检测 888
15.5.3 地形跟踪技术 889
15.6 总结 890
第 16 章优化技术 891
16.1 优化技术iques 简介 891
16.2 使用 Microsoft Visual C++ 和 Intel VTune 892 分析代码
16.2.1 使用 Visual C++ 892 进行分析
16.2.2 分析数据 893
16.2.3 使用 VTune 894 进行优化
16.3 使用英特尔 C++ 编译器 899
16.3.1 下载英特尔优化编译器 900
16.3.2 使用英特尔编译器 900
16.3.3 使用编译器选项 901
16.3.4 为源文件手动选择编译器901
16.3.5 优化策略 902
16.4 SIMD 编程初步 902
16.4.1 SIMD 基本架构 903
16.4.2 使用 SIMD 903
16.4.3 SIMD 3D 矢量类 912< br>16.5 通用优化技术 918
16.5 .1 技术 1:消除 _ftol() 918
16.5.2 技术 2:设置 FPU 控制字 918
16.5.3 技术 3:快速将浮点变量设置为零 919
16.5.4 技巧 4:快速计算平方根 919
16.5.5 技巧 5:分段线性反正切 920
16.5.6 技巧 6:指针增量 920
16.5.7 技巧 7:把 if 语句放在 Ou tside 循环 921
16.5.8 技巧 8:分支管道 921
16.5.9 技巧 9:数据对齐 921
16.5.10 技巧 10:将所有短函数声明为内联 922
16.5、 11 参考 922
16.6 总结 922
第六部分附录
附录 A CD:924
附录 B 安装 DirectX 并使用 Visual C/C++ CD:925
B.1 安装 DirectX CD:925
B.2 使用 Visual C/C++ 编译器 CD:925
B.3 编译技巧 CD:926
附录 C 三角和矢量参考 CD:927
C.1 三角函数 CD:927
C.2 向量 CD:929
C.2.1 向量长度 CD:930
C.2.2 归一化 CD:930
C. 2.3 标量乘法 CD:930
C.2.4 向量加法 CD:931
C.2.5 向量减法 CD:931
C.2.6 点积 CD:932
C.2.7 叉积 CD:933
C.2.8 零向量 CD:934
C.2.9 位置向量 CD:934
C.2.10 向量线性组合 CD:934
附录 D 介绍 C++ CD:935
D. 1 什么是 C++ CD:935
D.2 基本 C++ 知识 CD:937
D.3 新类型、关键字和约定 CD:937
D.3.1 评论 CD:937
D.3.2常量 CD:937
D.3.3 参考变量 CD:938
D.3.4 即时创建的变量 CD:938
D.4 内存管理 CD:939
D.5 流输入/输出 CD: 939
D.6 类 CD:941
D.6.1 新结构 CD:941
D.6.2 简单类 CD:942
D.6.3 公共和私人 CD:942
D .6.4 类的成员函数(方法) CD:943
D.6.5 构造函数和析构函数 CD:944
D. 6.6 编写构造函数 CD:945
D.6.7 编写析构函数 CD:946
D.7 域运算符 CD:947
D.8 函数和运算符重载 CD:948
D. 9 基本模板 CD:950
D.10 异常处理简介 CD:951
D.11 摘要 CD:954
附录 E 游戏编程资源 CD:955
E.1 游戏编程和新闻站点 CD:955
E.2 下载站点 CD:955
E.3 2D/3D 引擎 CD:956
E.4 游戏编程书籍 CD:956
E.5 Microsoft Direct X 多媒体展示 CD:956
E.6 新闻组 CD:957
E.7 与行业同步 CD:957
E.8 游戏开发杂志 CD:957
E.9 Quake Materials CD: 957
E.10 免费模型和纹理 CD:957
E.11 游戏网站开发人员 CD:957
附录 F ASCII 码表 CD:959

精彩的书籍总结

本书中的程序是使用Microsoft Visual C++ 6.0 编写的。但是,在大多数情况下,您也可以使用任何与 Win32 兼容的编译器进行编译。尽管如此,我还是推荐 Microsoft VC++ 或 .NET,因为它们对于此类工作来说是最有效的。
如果您不熟悉您的编译器集成开发环境 (IDE),那么您在编译 Windows 程序时肯定会遇到麻烦。因此,在编译程序之前,一定要花一些时间熟悉编译器,至少要知道如何编译控制台程序“Hello World”。
要编译生成Windows Win32.EXE程序,只需将项目的目标程序设置为Win32.EXE,然后编译即可。但是,要创建 DirectX 程序,必须在项目中包含 DirectX 导入库。

您可能认为只需将 DirectX 库添加到包含路径就足够了,但这是行不通的。为避免麻烦,最好手动将 DirectX.LIB 文件包含到项目中。 .LIB 文件位于 DirectX SDK 安装目录的 LIB\ 目录中。这样就不会出现链接错误。在大多数情况下,需要以下文件。
DDRAW.LIB:DirectDraw 导入库。
DINPUT.LIB:DirectInput 导入库。
DINPUT8.LIB:DirectInput8 导入库。
DSOUND.LIB:DirectSound 导入库。
WINMM.LIB:Windows 多媒体扩展库。
具体使用上述文件时,会更详细地介绍;当链接器报告“未解析的符号”错误时,请检查是否包含这些库。我不想再从新手那里收到任何关于此的电子邮件。
除了DirectX.LIB文件外,DirectX.H文件也需要放在头文件搜索路径中。另外,请务必将 DirectX SDK 目录放在搜索路径列表的顶部,因为许多 C++ 编译器都带有旧版本的 DirectX,

编译器可能会在其 INCLUDE\ 中找到旧版本的头文件目录并错误地使用它们。正确的位置是DirectX SDK的include目录,也就是DirectX SDK安装目录中的INCLUDE\目录。
最后,如果读者使用的是Borland 产品,请务必使用Borland 版本的DirectX.LIB 文件,该文件位于DirectX SDK 安装目录的BORLAND\ 目录下。

阅读剩余
THE END