图书介绍

3D游戏编程大师技巧PDF|Epub|txt|kindle电子书版本网盘下载

3D游戏编程大师技巧
  • (美)Andre LaMothe著;李祥瑞,陈武译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115133719
  • 出版时间:2005
  • 标注页数:922页
  • 文件大小:92MB
  • 文件页数:940页
  • 主题词:游戏-应用程序-程序设计-教材

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

3D游戏编程大师技巧PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

目录2

第一部分 3D游戏编程简介2

第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游戏范例:Raiders 3D15

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 玩Raiders3D37

1.6 总结37

第2章 Windows和DirectX简明教程38

2.1 Win32编程模型38

2.2 Windows程序的最小需求39

2.3.1 Windows类43

2.3 一个基本的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

4.5.5 向量减法 157

2.4.1 HEL和HAL57

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.1 虚拟计算机接口简介65

第3章 使用虚拟计算机进行3D游戏编程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

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

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对象)引擎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数学和变换142

第4章 三角学、向量、矩阵和四元数142

4.1 数学表示法142

4.2 2D坐标系143

4.2.1 2D笛卡尔坐标143

4.2.2 2D极坐标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.6 点积157

4.5.7 叉积159

4.5.9 位置和位移向量160

4.5.8 零向量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.2 直线176

4.8.1 点176

4.8 基本几何实体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.2 数据结构和类型203

5.2.1 向量和点203

5.1.3 错误处理203

5.1.4 关于C++的最后说明203

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.2 点和向量宏218

5.4.1 通用宏218

5.4.3 矩阵宏219

5.4.4 四元数220

5.4.5 定点数宏221

5.5 函数原型221

5.6 全局变量224

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范例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.1 模型(局部)坐标291

6.3 3D坐标系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.11 总结353

6.10 将各种功能集成到引擎中353

6.9.5 混合引擎353

第7章 渲染3D线框世界354

7.1 线框引擎的总体体系结构354

7.1.1 数据结构和3D流水线355

7.1.2 主多边形列表357

7.1.3 新的软件模块359

7.2 编写3D文件加载器359

7.3 构建3D流水线367

7.3.1 通用变换函数367

7.3.2 局部坐标到世界坐标变换372

7.3.3 欧拉相机模型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

第三部分 基本3D渲染424

第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 深度排序和画家算法475

8.5 使用新的模型格式479

8.5.1 分析器类479

8.5.2 辅助函数482

8.5.3 3D Studio MAX ASCII格式.ASC484

8.5.4 TrueSpace ASCII.COB格式486

8.5.5 Quake II二进制.MD2格式概述494

8.6 3D建模工具简介495

8.7 总结497

第9章 插值着色技术和仿射纹理映射498

9.1 新T3D引擎的特性498

9.2 更新T3D数据结构和设计499

9.2.1 新的#defines499

9.2.2 新增的数学结构501

9.2.3 实用宏502

9.2.4 添加表示3D网格数据的特性503

9.2.5 更新物体结构和渲染列表结构508

9.2.6 函数清单和原型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 Shader的多边形执行光照计算553

9.6.1 一维空间中的采样560

9.6 基本采样理论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 SIMD573

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/梁友栋-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.1 深度缓存和可见性简介624

第11章 深度缓存和可见性624

11.2 z缓存基础626

11.2.1 z缓存存在的问题627

11.2.2 z缓存范例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缓存系统635

11.4 可能的z缓存优化649

11.4.1 使用更少的内存649

11.4.2 降低清空z缓存的频率650

11.4.3 混合z缓存651

11.5 z缓存存在的问题651

11.6.1 演示程序Ⅰ:z缓存可视化652

11.6 软件和z缓存演示程序652

11.6.2 演示程序Ⅱ:Wave Raider653

11.7 总结658

第四部分 高级3D渲染660

第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 透视纹理映射的数学基础696

12.5 透视修正纹理映射和1/z缓存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 新的渲染场境741

12.9.2 设置渲染场境743

12.9.3 调用对渲染场境进行渲染的函数745

12.10 总结753

第13章 空间划分和可见性算法754

13.1 新的游戏引擎模块754

13.2 空间划分和可见面判定简介754

13.3 二元空间划分757

13.3.1 平行于坐标轴的二元空间划分758

13.3.2 任意平面空间划分759

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 将BSP树集成到图形流水线中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 潜在可见集的其他编码方法809

13.4.3 流行的PVS计算方法810

13.5 入口811

13.6 包围体层次结构和八叉树813

13.6.1 使用BHV树815

13.6.2 运行性能816

13.6.3 选择策略817

13.6.4 实现BHV818

13.6.5 八叉树825

13.7 遮掩剔除825

13.7.1 遮掩体826

13.7.2 选择遮掩物826

13.7.3 混合型遮掩物选择方法827

13.8 总结827

第14章 阴影和光照映射828

14.1 新的游戏引擎模块828

14.2 概述828

14.3 简化的阴影物理学829

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 优化平面阴影848

14.6 光照映射和面缓存技术简介848

14.6.1 面缓存技术850

14.6.2 生成光照图850

14.6.3 实现光照映射函数851

14.6.4 暗映射(dark mapping)853

14.6.5 光照图特效854

14.6.6 优化光照映射代码854

14.7 整理思路854

14.8 总结854

15.1 新的游戏引擎模块858

15.2 3D动画简介858

第五部分 高级动画、物理建模和优化858

第15章 3D角色动画、运动和碰撞检测858

15.3 Quake Ⅱ.MD2文件格式859

15.3.1 .MD2文件头861

15.3.2 加载Quake Ⅱ.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 优化技术简介891

16.2 使用MicrosoftVisualC++和Intel VTune剖析代码892

16.2.1 使用Visual C++进行剖析892

16.2.2 分析剖析数据893

16.2.3 使用VTune进行优化894

16.3 使用Intel C++编译器899

16.3.1 下载Intel的优化编译器900

16.3.2 使用Intel编译器900

16.3.3 使用编译器选项901

16.3.4 手工为源文件选择编译器901

16.3.5 优化策略902

16.4 SIMD编程初步902

16.4.2 使用SIMD903

16.4.1 SIMD基本体系结构903

16.4.3 一个SIMD 3D向量类912

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语句放在循环外面921

16.5.8 技巧8:支化(branching)流水线921

16.5.9 技巧9:数据对齐921

16.5.10 技巧10:将所有简短函数都声明为内联的922

16.5.11 参考文献922

16.6 总结922

热门推荐