C++游戏编程:创建3D游戏 pdf下载

C++游戏编程:创建3D游戏 百度网盘pdf下载

作者:
简介:C++游戏编程:创建3D游戏
出版社:
出版时间:2019-10
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

作  者:(美)桑贾伊·马达夫(Sanjay Madhav) 著 王存珉,王燕 译
定  价:99
出 版 社:人民邮电出版社
出版日期:2019年10月01日
页  数:399
装  帧:平装
ISBN:9787115514066
章 游戏编程概述1
1.1 设置开发环境1
1.1.1 Microsoft Windows1
1.1.2 Apple macOS2
1.2 获取本书的源代码2
1.3 C++标准库以外的程序库2
1.4 游戏循环和Game类3
1.4.1 关于“帧”的详解3
1.4.2 实现一个骨骼Game类5
1.4.3 Main函数8
1.4.4 基本输入处理9
1.5 基本的2D图形11
1.5.1 颜色缓冲区12
1.5.2 双缓冲区13
1.5.3 实现基本的2D图形15
1.5.4 绘制墙壁、一个球和一支球拍17
1.6 更新游戏19
1.6.1 真实时间和游戏时间19
1.6.2 根据增量时间的游戏逻辑19
1.6.3 更新球拍的位置21
1.6.4 更新球的位置22
1.7 游戏项目25
1.8 总结25
1.9 补充阅读材料25
1.10 练习题26
1.10.1 练习题126
1.10.2 练习题226
第 2章 游戏对象和2D图形27
2.1 游戏对象27
2.1.1 游戏对象的类型27
2.1.2 游戏对象模型28
2.1.3 将游戏对象融入游戏循环中32
2.2 精灵34
2.2.1 加载图像文件34
2.2.2 绘制精灵36
2.2.3 动画精灵39
2.3 滚动背景41
2.4 游戏项目43
2.5 总结44
2.6 补充阅读材料45
2.7 练习题45
2.7.1 练习题145
2.7.2 练习题245
2.7.3 练习题346
第3章 向量和基础物理47
3.1 向量47
3.1.1 获得两点之间的向量:减法48
3.1.2 向量缩放:标量乘法49
3.1.3 合并向量:加法49
3.1.4 确定距离:长度50
3.1.5 确定方向:单位向量和标准化51
3.1.6 将角度转换为前向向量52
3.1.7 将前向向量转换为角度:反正切52
3.1.8 确定向量之间的角度:点积53
3.1.9 计算法线:积54
3.2 基本运动56
3.2.1 创建一个BasicMoveComponent类56
3.2.2 创建一个InputComponent类59
3.3 牛顿物理学62
3.3.1 线性力学概述62
3.3.2 用欧拉积分计算位置63
3.3.3 关于可变步长的问题63
3.4 基本碰撞检测
3.4.1 圆与圆的交集
3.4.2 创建一个CircleComponent子类65
3.5 游戏项目66
3.6 总结68
3.7 补充阅读材料68
3.8 练习题68
3.8.1 练习题169
3.8.2 练习题269
3.8.3 练习题370
第4章 人工智能71
4.1 状态机行为71
4.1.1 设计状态机71
4.1.2 基本状态机的实现72
4.1.3 以类表示的状态73
4.2 寻路76
4.2.1 图形77
4.2.2 广度优先搜索78
4.2.3 heuristics函数81
4.2.4 贪婪佳优先搜索83
4.2.5 A*搜索87
4.2.6 迪杰斯特拉算法89
4.2.7 跟随路径90
4.2.8 其他图形表示法91
4.3 游戏树92
4.3.1 极大极小算法93
4.3.2 处理不完整的游戏树95
4.3.3 α-β剪枝算法96
4.4 游戏项目98
4.5 总结99
4.6 补充阅读材料100
4.7 练习题100
4.7.1 练习题1100
4.7.2 练习题2101
第5章 开放图形库(OpenGL)102
5.1 初始化OpenGL102
5.1.1 设置OpenGL窗口102
5.1.2 OpenGL上下文和初始化GLEW104
5.1.3 渲染帧105
5.2 三角形基础105
5.2.1 为何选择多边形105
5.2.2 标准化设备坐标106
5.2.3 顶点和索引缓冲区106
5.3 着色器110
5.3.1 顶点着色器111
5.3.2 片段着色器111
5.3.3 编写基本着色器111
5.3.4 加载着色器113
5.3.5 绘制三角形117
5.4 变换基础119
5.4.1 对象空间120
5.4.2 世界空间120
5.4.3 变换为世界空间121
5.5 矩阵与变换124
5.5.1 矩阵乘法124
5.5.2 使用矩阵来变换点124
5.5.3 变换为世界空间,再现126
5.5.4 将世界变换添加到Actor类128
5.5.5 从世界空间变换到剪辑空间130
5.5.6 更新着色器以使用变换矩阵131
5.6 纹理映射135
5.6.1 加载纹理136
5.6.2 更新顶点格式139
5.6.3 更新着色器140
5.6.4 Alpha混合143
5.7 游戏项目145
5.8 总结145
5.9 补充阅读材料146
5.10 练习题146
5.10.1 练习题1146
5.10.2 练习题2146
第6章 3D图形147
6.1 3D中的Actor变换147
6.1.1 3D变换矩阵147
6.1.2 欧拉角148
6.1.3 四元数149
6.1.4 运行中新的Actor变换151
6.2 加载3D模型152
6.2.1 选择网格模型格式153
6.2.2 更新顶点属性155
6.2.3 加载gpmes件156
6.3 绘制3D网格157
6.3.1 变换到剪辑空间,重访158
6.3.2 走出画家算法,进入Z缓冲161
6.3.3 BasicMesh着色器1
6.3.4 MeshComponent类1
6.4 光照167
6.4.1 再访顶点属性167
6.4.2 光照的类型167
6.4.3 Phong反射模型169
6.4.4 实现光照171
6.5 游戏项目175
6.6 总结175
6.7 补充阅读材料176
6.8 练习题176
6.8.1 练习题1176
6.8.2 练习题2177
第7章 音频178
7.1 引导音频178
7.1.1 FMOD179
7.1.2 安装FMOD软件179
7.1.3 创建一个音频系统180
7.1.4 储存库和事件182
7.1.5 SoundEvent类185
7.2 3D位置音频188
7.2.1 设置基本侦听器189
7.2.2 向SoundEvent类添加位置功能191
7.2.3 创建AudioComponent类,使角色和声音事件相关联192
7.2.4 第三人称游戏中的侦听器193
7.2.5 多普勒效应194
7.3 混合和效果195
7.3.1 总线196
7.3.2 快照196
7.3.3 阻塞197
7.4 游戏项目198
7.5 总结198
7.6 补充阅读材料199
7.7 练习题199
7.7.1 练习题1199
7.7.2 练习题2199
第8章 输入系统200
8.1 输入设备200
8.1.1 轮询200
8.1.2 正沿和负沿201
8.1.3 事件203
8.1.4 基本InputSystem架构203
8.2 键盘输入205
8.3 鼠标输入208
8.3.1 鼠标按键和鼠标位置208
8.3.2 相对移动210
8.3.3 鼠标滚动轮211
8.4 控制器输入212
8.4.1 启用单一控制器212
8.4.2 按键213
8.4.3 模拟摇杆和扳机215
8.4.4 过滤二维中的模拟摇杆217
8.4.5 支持多个控制器219
8.5 输入映射220
8.6 游戏项目221
8.7 总结222
8.8 补充阅读材料223
8.9 练习题223
8.9.1 练习题1223
8.9.2 练习题2223
第9章 相机224
9.1 人称相机224
9.1.1 基本的人称移动224
9.1.2 无俯仰角度的相机226
9.1.3 加入俯仰角度的相机226
9.1.4 人称模型228
9.2 跟拍相机229
9.2.1 基本跟拍相机229
9.2.2 添加弹簧231
9.3 轨道相机233
9.4 样条曲线相机236
9.5 逆投影239
9.6 游戏项目241
9.7 总结242
9.8 补充阅读材料242
9.9 练习题242
9.9.1 练习题1243
9.9.2 练习题2243
0章 碰撞检测244
10.1 几何(体)类型244
10.1.1 线段244
10.1.2 平面247
10.1.3 包围体248
10.2 相交测试252
10.2.1 包含点测试252
10.2.2 包围框测试254
10.2.3 线段相交测试257
10.2.4 动态对象263
10.3 向游戏代码添加碰撞265
10.3.1 BoxComponent类266
10.3.2 PhysWorld类267
10.3.3 使用SegmentCast函数的球弹碰撞检测269
10.3.4 在PhysWorld类中测试BoxComponent组件间碰撞270
10.3.5 玩家与墙壁的碰撞检测272
10.4 游戏项目274
10.5 总结275
10.6 补充阅读材料276
10.7 练习题276
10.7.1 练习题1276
10.7.2 练习题2277
10.7.3 练习题3277
1章 用户界面278
11.1 字体渲染278
11.2 用户界面屏幕281
11.2.1 用户界面屏幕栈282
11.2.2 暂停菜单284
11.2.3 按钮286
11.2.4 对话框289
11.3 平视显示器元素291
11.3.1 添加十字准线291
11.3.2 添加雷达293
11.4 本地化296
11.4.1 使用Unicode297
11.4.2 添加文本映射297
11.4.3 其他本地化问题299
11.5 支持多个分辨率300
11.6 游戏项目300
11.7 总结301
11.8 补充阅读材料301
11.9 练习题302
11.9.1 练习题1302
11.9.2 练习题2302
11.9.3 练习题3302
2章 骨骼动画303
12.1 骨骼动画的基础303
12.1.1 骨架和姿势304
12.1.2 反向绑定姿势矩阵307
12.1.3 动画数据307
12.1.4 蒙皮308
12.2 实现骨骼动画309
12.2.1 使用带有骨骼蒙皮的顶点属性进行绘制310
12.2.2 加载骨架数据314
12.2.3 加载动画数据315
12.2.4 蒙皮顶点着色器程序319
12.2.5 更新动画321
12.3 游戏项目323
12.4 总结324
12.5 补充阅读材料325
12.6 练习题325
12.6.1 练习题1325
12.6.2 练习题2325
3章 中间图形327
13.1 提高纹理质量327
13.1.1 纹理采样、再访328
13.1.2 纹理分级细化330
13.1.3 各向异性过滤331
13.2 向纹理进行渲染332
13.2.1 创建纹理333
13.2.2 创建一个Framebuffer对象333
13.2.3 渲染到Framebuffer对象335
13.2.4 在HUD中绘制后视镜纹理337
13.3 延迟着色338
13.3.1 创建G-Buffer类339
13.3.2 写入G缓冲区342
13.3.3 全局光照344
13.3.4 添加点光源348
13.3.5 改进和问题353
13.4 游戏项目354
13.5 总结354
13.6 补充阅读材料354
13.7 练习题355
13.7.1 练习题1355
13.7.2 练习题2355
4章 级别文件和二进制数据357
14.1 级别文件加载357
14.1.1 加载游戏的全局属性358
14.1.2 加载角色362
14.1.3 加载组件366
14.2 保存级别文件370
14.2.1 保存级别文件的全局属性371
14.2.2 保存级别文件的角色和组件372
14.3 二进制数据374
14.3.1 保存二进制文件375
14.3.2 加载二进制的网格文件377
14.4 游戏项目379
14.5 总结380
14.6 补充阅读材料381
14.7 练习题381
14.7.1 练习题1381
14.7.2 练习题2382
附录A 中级C++回顾383
本书主要介绍用C++进行3D电子游戏编程的方法,并深入探讨游戏开发人员在实际工作中所使用的相关技术和系统。全书分为14章和1个附录(附录A)。~5章主要介绍2D电子游戏的内容和电子游戏编程的核心概念;第6~14章主要介绍并讲解3D电子游戏编程的内容,其中第8章的内容既适用于2D环境下的电子游戏编程,也适用于3D环境下的电子游戏编程;附录A涵盖一些C++中的重要概念,包括引用、队列、指针、动态分配等。
本书以实际游戏项目为主线,详细讲解了开发相应项目所需的知识及开发设计过程中采用的实现方法。
本书适合使用C++语言进行电子游戏开发的初级或中级开发人员阅读,也可供使用其他语言开发游戏(或使用其他游戏开发框架开发游戏)的技术人员参考,还可作为高等院校相关专业的参考用书(本书所涵盖内容相当于大学课程设置中一个半学期的教学量)。