3D游戏编程大师技巧
¥
36.07
3.1折
¥
118
九品
仅1件
作者[美]拉莫泽 著;李祥瑞、陈武 译
出版社人民邮电出版社
出版时间2005-06
版次1
装帧平装
货号A6
上书时间2024-10-30
商品详情
- 品相描述:九品
图书标准信息
-
作者
[美]拉莫泽 著;李祥瑞、陈武 译
-
出版社
人民邮电出版社
-
出版时间
2005-06
-
版次
1
-
ISBN
9787115133717
-
定价
118.00元
-
装帧
平装
-
开本
16开
-
纸张
胶版纸
-
页数
922页
-
字数
1921千字
-
正文语种
简体中文
-
原版书名
Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization
- 【内容简介】
-
《3D游戏编程大师技巧》是游戏编程畅销书作者AndréLaMothe的扛鼎之作,从游戏编程和软件引擎的角度深入探讨了3D图形学的各个重要主题。全书共分5部分,包括16章的内容。第1~3章简要地介绍了Windows和DirectX编程,创建了一个Windows应用程序模板,让读者能够将精力放在游戏逻辑和图形实现中,而不用考虑Windows和DirectX方面的琐事;第4~5章简要地介绍了一些数学知识并实现了一个数学库,供以后编写演示程序时使用;第6章概述了3D图形学,让读者对《3D游戏编程大师技巧(附光盘)》将介绍的内容有大致的了解;第7~11章分别介绍了光照、明暗处理、仿射纹理映射、3D裁剪和深度缓存等内容;第12~14章讨论了高级3D渲染技术,包括透视修正纹理映射、Alpha混合、1/z缓存、纹理滤波、空间划分和可见性算法、阴影、光照映射等;第15~16章讨论了动画、运动碰撞检测和优化技术。
《3D游戏编程大师技巧》适合于有一定编程经验并想从事游戏编程工作或对3D图形学感兴趣的人员阅读。
- 【作者简介】
-
AndreLaMothe有25年的计算行业从业经验,拥有数学、计算机科学和电子工程等学位,是20岁时就在NASA做研究工作的少数几人之一。在30岁之前,他在硅谷的众多公司中从事过咨询工作,了解了公司运作,获得了多种领域的知识,如电信、虚拟现实、机器人技术、编译器设计、3D引擎、人工智能以及计算和工程的其他领域的知识。
他创办的公司XTREMEGAME公司一直是自成一体的游戏开发、发行商。后来他创办了XTREME
GAMESDEVELOPERCONFERENCE(XGDC),为游戏开发人员提供了费用更低廉的GDC替代品。
最近,他参与了多个项目的开发工作,其中包括EGAMEZONENETWORKS——一个公平、有趣、没有任何广告的网络游戏分发系统。他还创建了一家新公司——NURVENETWORKS公司,为在乎价格的消费者和业余爱好者开发手持设备上的视频游戏系统。最后,他还是世界上最庞大的游戏开发系列丛书的编辑。
- 【目录】
-
第一部分3D游戏编程简介
第1章3D游戏编程入门2
1.1简介2
1.22D/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.13D关卡编辑器12
1.4.2使用编译器13
1.5一个3D游戏范例:Raiders3D15
1.5.1事件循环33
1.5.2核心3D游戏逻辑34
1.5.33D投影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.1Win32编程模型38
2.2Windows程序的最小需求39
2.3一个基本的Windows应用程序43
2.3.1Windows类43
2.3.2注册Windows类47
2.3.3创建窗口47
2.3.4事件处理程序48
2.3.5主事件循环52
2.3.6构建实时事件循环55
2.4DirectX和COM简明教程56
2.4.1HEL和HAL57
2.4.2DirectX基本类58
2.5COM简介59
2.5.1什么是COM对象60
2.5.2创建和使用DirectXCOM接口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.5I/O、声音和音乐73
3.3T3DLIB游戏控制台74
3.3.1T3DLIB系统概述74
3.3.2基本游戏控制台74
3.4T3DLIB1库79
3.4.1DirectX图形引擎体系结构79
3.4.2基本常量79
3.4.3工作宏81
3.4.4数据类型和结构81
3.4.5函数原型84
3.4.6全局变量88
3.4.7DirectDraw接口89
3.4.82D多边形函数92
3.4.9数学函数和错误函数97
3.4.10位图函数99
3.4.118位调色板函数102
3.4.12实用函数104
3.4.13BOB(Blitter对象)引擎106
3.5T3DLIB2DirectX输入系统112
3.6T3DLIB3声音和音乐库116
3.6.1头文件117
3.6.2类型117
3.6.3全局变量117
3.6.4DirectSoundAPI封装函数118
3.6.5DirectMusicAPI封装函数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数学和变换
第4章三角学、向量、矩阵和四元数142
4.1数学表示法142
4.22D坐标系143
4.2.12D笛卡尔坐标143
4.2.22D极坐标144
4.33D坐标系147
4.3.13D笛卡尔坐标147
4.3.23D柱面坐标149
4.3.33D球面坐标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
4.5.6点积157
4.5.7叉积159
4.5.8零向量160
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.12D参数化直线182
4.9.23D参数化直线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错误处理203
5.1.4关于C++的最后说明203
5.2数据结构和类型203
5.2.1向量和点203
5.2.2参数化直线204
5.2.33D平面206
5.2.4矩阵206
5.2.5四元数209
5.2.6角坐标系支持210
5.2.72D极坐标210
5.2.83D柱面坐标211
5.2.93D球面坐标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
5.7数学引擎API清单225
5.7.1三角函数225
5.7.2坐标系支持函数226
5.7.3向量支持函数228
5.7.4矩阵支持函数235
5.7.52D和3D参数化直线支持函数245
5.7.63D平面支持函数248
5.7.7四元数支持函数252
5.7.8定点数支持函数259
5.7.9方程求解支持函数263
5.8浮点单元运算初步265
5.8.1FPU体系结构266
5.8.2FPU堆栈266
5.8.3FPU指令集268
5.8.4经典指令格式270
5.8.5内存指令格式271
5.8.6寄存器指令格式271
5.8.7寄存器弹出指令格式271
5.8.8FPU范例271
5.8.9FLD范例272
5.8.10FST范例272
5.8.11FADD范例273
5.8.12FSUB范例275
5.8.13FMUL范例276
5.8.14FDIV范例278
5.9数学引擎使用说明279
5.10关于数学优化的说明280
5.11总结280
第6章3D图形学简介282
6.13D引擎原理282
6.23D游戏引擎的结构282
6.2.13D引擎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.83D模型和图像数据库289
6.33D坐标系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.53D工具331
6.6从外部加载数据332
6.6.1PLG文件333
6.6.2NFF文件335
6.6.33DStudio文件338
6.6.4CaligariCOB文件343
6.6.5MicrosoftDirectX.X文件345
6.6.63D文件格式小结345
6.7基本刚性变换和动画345
6.7.13D平移345
6.7.23D旋转346
6.7.33D变形347
6.8再看观察流水线348
6.93D引擎类型349
6.9.1太空引擎349
6.9.2地形引擎350
6.9.3FPS室内引擎351
6.9.4光线投射和体素引擎352
6.9.5混合引擎353
6.10将各种功能集成到引擎中353
6.11总结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.4UVN相机模型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.53D演示程序408
7.5.1单个3D三角形408
7.5.23D线框立方体411
7.5.3消除了背面的3D线框立方体413
7.5.43D坦克演示程序414
7.5.5相机移动的3D坦克演示程序416
7.5.6战区漫步演示程序418
7.6总结421
第三部分基本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.116位着色449
8.3.28位着色450
8.3.3一个健壮的用于8位模式的RGB模型450
8.3.4一个简化的用于8位模式的强度模型453
8.3.5固定着色457
8.3.6恒定着色459
8.3.7Gouraud着色概述472
8.3.8Phong着色概述474
8.4深度排序和画家算法475
8.5使用新的模型格式479
8.5.1分析器类479
8.5.2辅助函数482
8.5.33DStudioMAXASCII格式.ASC484
8.5.4TrueSpaceASCII.COB格式486
8.5.5QuakeII二进制.MD2格式概述494
8.63D建模工具简介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更新3DStudio.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对使用GouraudShader的多边形执行光照计算553
9.6基本采样理论560
9.6.1一维空间中的采样560
9.6.2双线性插值561
9.6.3u和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.4SIMD573
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.2Cohen-Sutherland裁剪算法585
10.2.3Cyrus-Beck/梁友栋-Barsky裁剪算法586
10.2.4Weiler-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.2z缓存基础626
11.2.1z缓存存在的问题627
11.2.2z缓存范例627
11.2.3平面方程法630
11.2.4z坐标插值631
11.2.5z缓存中的问题和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.5z缓存存在的问题651
11.6软件和z缓存演示程序652
11.6.1演示程序I:z缓存可视化652
11.6.2演示程序II:WaveRaider653
11.7总结658
第四部分高级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.7Mipmapping和三线性纹理滤波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.5BSP树数据结构和支持函数763
13.3.6创建BSP树765
13.3.7分割策略767
13.3.8遍历和显示BSP树775
13.3.9将BSP树集成到图形流水线中784
13.3.10BSP关卡编辑器785
13.3.11BSP的局限性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暗映射(darkmapping)853
14.6.5光照图特效854
14.6.6优化光照映射代码854
14.7整理思路854
14.8总结854
第五部分高级动画、物理建模和优化
第15章3D角色动画、运动和碰撞检测858
15.1新的游戏引擎模块858
15.23D动画简介858
15.3QuakeII.MD2文件格式859
15.3.1.MD2文件头861
15.3.2加载QuakeII.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.53D碰撞检测887
15.5.1包围球和包围圆柱887
15.5.2使用数据结构来提高碰撞检测的速度888
15.5.3地形跟踪技术889
15.6总结890
第16章优化技术891
16.1优化技术简介891
16.2使用MicrosoftVisualC++和IntelVTune剖析代码892
16.2.1使用VisualC++进行剖析892
16.2.2分析剖析数据893
16.2.3使用VTune进行优化894
16.3使用IntelC++编译器899
16.3.1下载Intel的优化编译器900
16.3.2使用Intel编译器900
16.3.3使用编译器选项901
16.3.4手工为源文件选择编译器901
16.3.5优化策略902
16.4SIMD编程初步902
16.4.1SIMD基本体系结构903
16.4.2使用SIMD903
16.4.3一个SIMD3D向量类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
第六部分附录
附录A光盘内容简介CD:924
附录B安装DirectX和使用VisualC/C++CD:925
B.1安装DirectXCD:925
B.2使用VisualC/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
附录DC++入门CD:935
D.1C++是什么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.32D/3D引擎CD:956
E.4游戏编程书籍CD:956
E.5微软公司的DirectX多媒体展示CD:956
E.6新闻组CD:957
E.7跟上行业的步伐CD:957
E.8游戏开发杂志CD:957
E.9Quake资料CD:957
E.10免费模型和纹理CD:957
E.11游戏网站开发者CD:957
附录FASCII码表CD:959
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价