您好,欢迎来到聚文网。 登录 免费注册
3D游戏编程大师技巧(全2册)

3D游戏编程大师技巧(全2册)

  • 字数: 2260000
  • 装帧: 平装
  • 出版社: 人民邮电出版社
  • 作者: (美)拉莫斯
  • 出版日期: 2012-07-01
  • 商品条码: 9787115282798
  • 版次: 1
  • 开本: 16开
  • 页数: 1112
  • 出版年份: 2012
定价:¥169.9 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
众多3D图形应用开 发者的启蒙推荐阅读 游戏编程畅销书作者André LaMothe的扛鼎之作 二十年游戏开发经验,打造Cengage著 名的游戏开发图书 探讨3D软件图形加速技术的经典之作
内容简介
本书是游戏编程畅销书作者André LaMothe的扛鼎之作,从游戏编程和软件引擎的角度深入探讨了3D图形学的各个重要主题。全书共分5部分,包括16章的内容。第1~3章简要地介绍了Windows和DirectX编程,创建了一个Windows应用程序模板,让读者能够将精力放在游戏逻辑和图形实现中,而不用考虑Windows和DirectX方面的琐事;第4~5章简要地介绍了一些数学知识并实现了一个数学库,供以后编写演示程序时使用;第6章概述了3D图形学,让读者对之后即将介绍的内容有大致的了解;第7~11章分别介绍了光照、明暗处理、仿射纹理映射、3D裁剪和深度缓存等内容;第12~14章讨论了高级3D渲染技术,包括透视修正纹理映射、Alpha混合、1/z缓存、纹理滤波、空间划分和可见性算法、阴影、光照映射等;第15~16章讨论了动画、运动碰撞检测和优化技术。本书适合于有一定编程经验并想从事游戏编程工作或对3D图形学感兴趣的人员阅读。
作者简介
拉莫斯(André LaMothe,也叫做Lord Necron),从事计算机编程工作30多年,获得数学、计算机科学和电子工程学学位。他发表过大量的有关图形学、游戏编程和人工智能的论文。他所著的《Tricks of the Game Programming Gurus》、《Sams Teach Yourself GameProgramming in 21 Days》、《The Game Programming Starter Kit》、《The Black Art of 3DGameProgramming》和《WindowsGame Programmingfor Dummies》,都是最畅销的作品。此外,他还参与合著了《Ciarcia'sCircuit Cellar Ⅰ》和《Ciarcia'sCircuit Cellar Ⅱ》。LaMothe曾执教于加利福尼亚大学圣克鲁斯分校的多媒体系。此外,André先生还是Xtreme Games LLC公司(www.xgames3d.com)和Xtreme GamesDevelopersConference(www.xgdc.com)的创始人和执行总裁。
目录
(上册)
第一部分3D游戏编程简介
第1章3D游戏编程入门2
1.1简介2
1.22D/3D游戏的元素3
1.2.1初始化4
1.2.2进入游戏循环4
1.2.3读取玩家输入4
1.2.4执行AI和游戏逻辑4
1.2.5渲染下一帧4
1.2.6同步显示5
1.2.7循环5
1.2.8关闭5
1.3通用游戏编程指南7
1.4使用工具11
1.4.13D关卡编辑器14
1.4.2使用编译器15
1.5一个3D游戏范例:Raiders 3D17
1.5.1事件循环37
1.5.2核心3D游戏逻辑38
1.5.33D投影39
1.5.4星空41
1.5.5激光炮和碰撞检测41
1.5.6爆炸41
1.5.7玩Raiders3D41
1.6总结41
第2章Windows和DirectX简明教程43
2.1Win32编程模型43
2.2Windows程序的最小需求44
2.3一个基本的Windows应用程序48
2.3.1Windows类49
2.3.2注册Windows类53
2.3.3创建窗口53
2.3.4事件处理程序55
2.3.5主事件循环59
2.3.6构建实时事件循环63
2.4DirectX和COM简明教程64
2.4.1HEL和HAL65
2.4.2DirectX基本类66
2.5COM简介67
2.5.1什么是COM对象68
2.5.2创建和使用DirectX COM接口70
2.5.3查询接口70
2.6总结72
第3章使用虚拟计算机进行3D游戏编程73
3.1虚拟计算机接口简介73
3.2建立虚拟计算机接口75
3.2.1帧缓存和视频系统75
3.2.2使用颜色78
3.2.3缓存交换80
3.2.4完整的虚拟图形系统82
3.2.5I/O、声音和音乐82
3.3T3DLIB游戏控制台83
3.3.1T3DLIB系统概述83
3.3.2基本游戏控制台83
3.4T3DLIB1库89
3.4.1DirectX图形引擎体系结构89
3.4.2基本常量89
3.4.3工作宏91
3.4.4数据类型和结构92
3.4.5函数原型95
3.4.6全局变量99
3.4.7DirectDraw接口100
3.4.82D多边形函数103
3.4.9数学函数和错误函数110
3.4.10位图函数111
3.4.118位调色板函数115
3.4.12实用函数118
3.4.13BOB(Blitter对象)引擎119
3.5T3DLIB2 DirectX输入系统126
3.6T3DLIB3声音和音乐库131
3.6.1头文件132
3.6.2类型132
3.6.3全局变量133
3.6.4DirectSound API封装函数133
3.6.5DirectMusic API封装函数138
3.7建立最终的T3D游戏控制台140
3.7.1映射真实图形到虚拟接口的非真实图形141
3.7.2最终的T3DLIB游戏控制台143
3.8范例T3LIB应用程序152
3.8.1窗口应用程序152
3.8.2全屏应用程序153
3.8.3声音和音乐154
3.8.4处理输入154
3.9总结157
第二部分3D数学和变换
第4章三角学、向量、矩阵和四元数160
4.1数学表示法160
4.22D坐标系161
4.2.12D笛卡尔坐标161
4.2.22D极坐标163
4.33D坐标系165
4.3.13D笛卡尔坐标165
4.3.23D柱面坐标168
4.3.33D球面坐标168
4.4三角学170
4.4.1直角三角形171
4.4.2反三角函数172
4.4.3三角恒等式173
4.5向量173
4.5.1向量长度174
4.5.2归一化174
4.5.3向量和标量的乘法175
4.5.4向量加法176
4.5.5向量减法176
4.5.6点积177
4.5.7叉积179
4.5.8零向量180
4.5.9位置和位移向量180
4.5.10用线性组合表示的向量181
4.6矩阵和线性代数182
4.6.1单位矩阵183
4.6.2矩阵加法184
4.6.3矩阵的转置184
4.6.4矩阵乘法184
4.6.5矩阵运算满足的定律186
4.7逆矩阵和方程组求解186
4.7.1克来姆法则188
4.7.2使用矩阵进行变换190
4.7.3齐次坐标191
4.7.4应用矩阵变换192
4.8基本几何实体198
4.8.1点198
4.8.2直线199
4.8.3平面202
4.9使用参数化方程206
4.9.12D参数化直线206
4.9.23D参数化直线208
4.10四元数简介213
4.10.1复数理论213
4.10.2超复数218
4.10.3四元数的应用223
4.11总结226
第5章建立数学引擎227
5.1数学引擎概述227
5.1.1数学引擎的文件结构228
5.1.2命名规则228
5.1.3错误处理229
5.1.4关于C++的最后说明229
5.2数据结构和类型229
5.2.1向量和点230
5.2.2参数化直线231
5.2.33D平面232
5.2.4矩阵233
5.2.5四元数236
5.2.6角坐标系支持237
5.2.72D极坐标237
5.2.83D柱面坐标238
5.2.93D球面坐标239
5.2.10定点数239
5.3数学常量240
5.4宏和内联函数242
5.4.1通用宏246
5.4.2点和向量宏246
5.4.3矩阵宏247
5.4.4四元数249
5.4.5定点数宏249
5.5函数原型250
5.6全局变量253
5.7数学引擎API清单253
5.7.1三角函数254
5.7.2坐标系支持函数255
5.7.3向量支持函数258
5.7.4矩阵支持函数266
5.7.52D和3D参数化直线支持函数277
5.7.63D平面支持函数281
5.7.7四元数支持函数285
5.7.8定点数支持函数293
5.7.9方程求解支持函数298
5.8浮点单元运算初步300
5.8.1FPU体系结构301
5.8.2FPU堆栈302
5.8.3FPU指令集303
5.8.4经典指令格式306
5.8.5内存指令格式306
5.8.6寄存器指令格式307
5.8.7寄存器弹出指令格式307
5.8.8FPU范例307
5.8.9FLD范例308
5.8.10FST范例308
5.8.11FADD范例310
5.8.12FSUB范例312
5.8.13FMUL范例313
5.8.14FDIV范例314
5.9数学引擎使用说明315
游戏控制台317
5.10关于数学优化的说明317
5.11总结317
第6章3D图形学简介318
6.13D引擎原理318
6.23D游戏引擎的结构319
6.2.13D引擎319
6.2.2游戏引擎320
6.2.3输入系统和网络320
6.2.4动画系统321
6.2.5碰撞检测和导航系统324
6.2.6物理引擎325
6.2.7人工智能系统326
6.2.83D模型和图像数据库327
6.33D坐标系328
6.3.1模型(局部)坐标328
6.3.2世界坐标331
6.3.3相机坐标334
6.3.4有关相机坐标的说明341
6.3.5隐藏物体(面)消除和裁剪342
6.3.6透视坐标347
6.3.7流水线终点:屏幕坐标356
6.4基本的3D数据结构363
6.4.1表示3D多边形数据时需要考虑的问题363
6.4.2定义多边形365
6.4.3定义物体369
6.4.4表示世界373
6.53D工具374
动画数据和运动数据375
6.6从外部加载数据375
6.6.1PLG文件375
6.6.2NFF文件378
6.6.33D Studio文件381
6.6.4Caligari COB文件387
6.6.5Microsoft DirectX .X文件389
6.6.63D文件格式小结389
6.7基本刚性变换和动画389
6.7.13D平移389
6.7.23D旋转390
6.7.33D变形392
6.8再看观察流水线393
6.93D引擎类型394
6.9.1太空引擎394
6.9.2地形引擎395
6.9.3FPS室内引擎396
6.9.4光线投射和体素引擎397
6.9.5混合引擎398
6.10将各种功能集成到引擎中399
6.11总结399
第7章渲染3D线框世界400
7.1线框引擎的总体体系结构400
7.1.1数据结构和3D流水线401
7.1.2主多边形列表403
7.1.3新的软件模块406
7.2编写3D文件加载器406
7.3构建3D流水线414
7.3.1通用变换函数414
7.3.2局部坐标到世界坐标变换420
7.3.3欧拉相机模型423
7.3.4UVN相机模型426
7.3.5世界坐标到相机坐标变换437
7.3.6物体剔除440
7.3.7背面消除444
7.3.8相机坐标到透视坐标变换446
7.3.9透视坐标到屏幕(视口)坐标变换451
7.3.10合并透视变换和屏幕变换455
7.4渲染3D世界457
7.53D演示程序461
7.5.1单个3D三角形461
7.5.23D线框立方体464
7.5.3消除了背面的3D线框立方体466
7.5.43D坦克演示程序467
7.5.5相机移动的3D坦克演示程序470
7.5.6战区漫步演示程序472
7.6总结476
(下册)
第三部分基本3D渲染
第8章基本光照和实体造型478
8.1计算机图形学的基本光照模型478
8.1.1颜色模型和材质480
8.1.2光源类型487
8.2三角形的光照计算和光栅化493
8.2.1为光照做准备497
8.2.2定义材质498
8.2.3定义光源502
8.3真实世界中的着色507
8.3.116位着色507
8.3.28位着色507
8.3.3一个健壮的用于8位模式的RGB模型508
8.3.4一个简化的用于8位模式的强度模型511
8.3.5固定着色515
8.3.6恒定着色517
8.3.7Gouraud着色概述533
8.3.8Phong着色概述535
8.4深度排序和画家算法535
8.5使用新的模型格式540
8.5.1分析器类540
8.5.2辅助函数543
8.5.33D Studio MAX ASCII格式.ASC546
8.5.4TrueSpace ASCII.COB格式548
8.5.5Quake II二进制.MD2格式概述557
8.63D建模工具简介558
8.7总结561
第9章插值着色技术和仿射纹理映射562
9.1新T3D引擎的特性562
9.2更新T3D数据结构和设计563
9.2.1新的#defines564
9.2.2新增的数学结构566
9.2.3实用宏567
9.2.4添加表示3D网格数据的特性568
9.2.5更新物体结构和渲染列表结构574
9.2.6函数清单和原型577
9.3重新编写物体加载函数583
9.3.1更新.PLG/PLX加载函数584
9.3.2更新3D Studio .ASC加载函数595
9.3.3更新Caligari .COB加载函数596
9.4回顾多边形的光栅化601
9.4.1三角形的光栅化601
9.4.2填充规则604
9.4.3裁剪606
9.4.4新的三角形渲染函数607
9.4.5优化612
9.5实现Gouraud着色处理613
9.5.1没有光照时的Gouraud着色614
9.5.2对使用Gouraud Shader的多边形执行光照计算624
9.6基本采样理论632
9.6.1一维空间中的采样632
9.6.2双线性插值634
9.6.3u和v的插值635
9.6.4实现仿射纹理映射637
9.7更新光照/光栅化引擎以支持纹理640
9.8对8位和16位模式下优化策略的最后思考645
9.8.1查找表645
9.8.2网格的顶点结合性646
9.8.3存储计算结果646
9.8.4SIMD647
9.9最后的演示程序647
Raider 3D II648
9.10总结651
第10章3D裁剪652
10.1裁剪简介652
10.1.1物体空间裁剪652
10.1.2图像空间裁剪655
10.2裁剪算法656
10.2.1有关裁剪的基本知识657
10.2.2Cohen-Sutherland裁剪算法661
10.2.3Cyrus-Beck/梁友栋-Barsky裁剪算法662
10.2.4Weiler-Atherton裁剪算法665
10.2.5深入学习裁剪算法667
10.3实现视景体裁剪667
10.3.1几何流水线和数据结构669
10.3.2在引擎中加入裁剪功能670
10.4地形小议691
10.4.1地形生成函数692
10.4.2生成地形数据700
10.4.3沙地汽车演示程序700
10.5总结704
第11章深度缓存和可见性705
11.1深度缓存和可见性简介705
11.2z缓存基础708
11.2.1z缓存存在的问题709
11.2.2z缓存范例709
11.2.3平面方程法711
11.2.4z坐标插值713
11.2.5z缓存中的问题和1/Z缓存714
11.2.6一个通过插值计算z和1/z的例子715
11.3创建z缓存系统718
11.4可能的z缓存优化734
11.4.1使用更少的内存734
11.4.2降低清空z缓存的频率734
11.4.3混合z缓存736
11.5z缓存存在的问题736
11.6软件和z缓存演示程序736
11.6.1演示程序I:z缓存可视化737
11.6.2演示程序II:Wave Raider738
11.7总结743
第四部分高 级3D渲染
第12章高 级纹理映射技术746
12.1纹理映射——第二波746
12.2新的光栅化函数754
12.2.1最终决定使用定点数754
12.2.2不使用z缓存的新光栅化函数755
12.2.3支持z缓存的新光栅化函数758
12.3使用Gouruad着色的纹理映射759
12.4透明度和alpha混合765
12.4.1使用查找表来进行alpha混合766
12.4.2在物体级支持alpha混合功能778
12.4.3在地形生成函数中加入alpha支持784
12.5透视修正纹理映射和1/z缓存786
12.5.1透视纹理映射的数学基础787
12.5.2在光栅化函数中加入1/z缓存功能793
12.5.3实现完 美透视修正纹理映射799
12.5.4实现线性分段透视修正纹理映射803
12.5.5透视修正纹理映射的二次近似808
12.5.6使用混合方法优化纹理映射812
12.6双线性纹理滤波814
12.7mipmapping和三线性纹理滤波819
12.7.1傅立叶分析和走样简介819
12.7.2创建mip纹理链822
12.7.3选择mip纹理830
12.7.4三线性滤波836
12.8多次渲染和纹理映射837
12.9使用单个函数来完成渲染工作837
12.9.1新的渲染场境838
12.9.2设置渲染场境840
12.9.3调用对渲染场境进行渲染的函数842
12.10总结851
第13章空间划分和可见性算法852
13.1新的游戏引擎模块852
13.2空间划分和可见面判定简介852
13.3二元空间划分856
13.3.1平行于坐标轴的二元空间划分857
13.3.2任意平面空间划分858
13.3.3使用多边形所在的平面来划分空间858
13.3.4显示/访问BSP树中的每个节点861
13.3.5BSP树数据结构和支持函数863
13.3.6创建BSP树865
13.3.7分割策略868
13.3.8遍历和显示BSP树876
13.3.9将BSP树集成到图形流水线中886
13.3.10BSP关卡编辑器887
13.3.11BSP的局限性897
13.3.12使用BSP树的零重绘策略897
13.3.13将BSP树用于剔除899
13.3.14将BSP树用于碰撞检测906
13.3.15集成BSP树和标准渲染907
13.4潜在可见集912
13.4.1使用潜在可见集913
13.4.2潜在可见集的其他编码方法914
13.4.3流行的PVS计算方法915
13.5入口917
13.6包围体层次结构和八叉树919
13.6.1使用BHV树921
13.6.2运行性能922
13.6.3选择策略923
13.6.4实现BHV924
13.6.5八叉树931
13.7遮掩剔除932
13.7.1遮掩体933
13.7.2选择遮掩物934
13.7.3混合型遮掩物选择方法934
13.8总结934
第14章阴影和光照映射935
14.1新的游戏引擎模块935
14.2概述935
14.3简化的阴影物理学936
14.4使用透视图像和广告牌来模拟阴影939
14.4.1编写支持透明功能的光栅化函数941
14.4.2新的库模块944
14.4.3简单阴影945
14.4.4缩放阴影947
14.4.5跟踪光源950
14.4.6有关模拟阴影的最后思考953
14.5平面网格阴影映射954
14.5.1计算投影变换954
14.5.2优化平面阴影957
14.6光照映射和面缓存技术简介958
14.6.1面缓存技术960
14.6.2生成光照图960
14.6.3实现光照映射函数961
14.6.4暗映射(dark mapping)963
14.6.5光照图特效964
14.6.6优化光照映射代码964
14.7整理思路965
14.8总结965
第五部分高 级动画、物理建模和优化
第15章3D角色动画、运动和碰撞检测968
15.1新的游戏引擎模块968
15.23D动画简介968
15.3Quake II .MD2文件格式969
15.3.1.MD2文件头971
15.3.2加载Quake II .MD2文件979
15.3.3使用.MD2文件实现动画987
15.3.4.MD2演示程序995
15.4不基于角色的简单动画996
15.4.1旋转运动和平移运动997
15.4.2复杂的参数化曲线移动998
15.4.3使用脚本来实现运动999
15.53D碰撞检测1001
15.5.1包围球和包围圆柱1001
15.5.2使用数据结构来提高碰撞检测的速度1003
15.5.3地形跟踪技术1003
15.6总结1004
第16章优化技术1005
16.1优化技术简介1005
16.2使用Microsoft Visual C++和Intel VTune剖析代码1006
16.2.1使用Visual C++进行剖析1006
16.2.2分析剖析数据1008
16.2.3使用VTune进行优化1009
16.3使用Intel C++编译器1015
16.3.1下载Intel的优化编译器1015
16.3.2使用Intel编译器1015
16.3.3使用编译器选项1016
16.3.4手工为源文件选择编译器1017
16.3.5优化策略1017
16.4SIMD编程初步1017
16.4.1SIMD基本体系结构1019
16.4.2使用SIMD1019
16.4.3一个SIMD 3D向量类1030
16.5通用优化技巧1036
16.5.1技巧1:消除_ftol()1036
16.5.2技巧2:设置FPU控制字1036
16.5.3技巧3:快速将浮点变量设置为零1037
16.5.4技巧4:快速计算平方根1038
16.5.5技巧5:分段线性反正切1038
16.5.6技巧6:指针递增运算1039
16.5.7技巧7:尽可能将if语句放在循环外面1039
16.5.8技巧8:支化(branching)流水线1040
16.5.9技巧9:数据对齐1040
16.5.10技巧10:将所有简短函数都声明为内联的1040
16.5.11参考文献1040
16.6总结1040
第六部分附录
附录A光盘内容简介1042
附录B安装DirectX和使用Visual C/C++1044
B.1安装DirectX1044
B.2使用Visual C/C++编译器1044
B.3编译提示1045
附录C三角学和向量参考1047
C.1三角学1047
C.2向量1049
C.2.1向量长度1050
C.2.2归一化1050
C.2.3标量乘法1051
C.2.4向量加法1052
C.2.5向量减法1052
C.2.6点积1053
C.2.7叉积1054
C.2.8零向量1055
C.2.9位置向量1055
C.2.10向量的线性组合1056
附录DC++入门1057
D.1C++是什么1057
D.2必须掌握的C++知识1059
D.3新的类型、关键字和约定1059
D.3.1注释符1059
D.3.2常量1060
D.3.3引用型变量1060
D.3.4即时创建变量1061
D.4内存管理1062
D.5流式输入/输出1062
D.6类1064
D.6.1新结构1064
D.6.2一个简单的类1065
D.6.3公有和私有1065
D.6.4类的成员函数(方法)1066
D.6.5构造函数和析构函数1067
D.6.6编写构造函数1068
D.6.7编写析构函数1070
D.7域运算符1071
在类外部定义成员函数1071
D.8函数和运算符重载1072
D.9基本模板1074
D.10异常处理简介1075
异常处理的组成部分1076
D.11总结1078
附录E游戏编程资源1079
E.1游戏编程和新闻网站1079
E.2下载站点1079
E.32D/3D引擎1080
E.4游戏编程书籍1080
E.5微软公司的Direct X多媒体展示1081
E.6新闻组1081
E.7跟上行业的步伐1081
E.8游戏开发杂志1081
E.9Quake资料1082
E.10免费模型和纹理1082
E.11游戏网站开 发者1082
附录FASCII码表1083

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网