C++游戏编程创建3D游戏

C++游戏编程创建3D游戏
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , , ,
2019-09
版次: 1
ISBN: 9787115514066
定价: 99.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 399页
61人买过
  • 本书主要介绍用C++进行3D电子游戏编程的方法,并深入探讨游戏开发人员在实际工作中所使用的相关技术和系统。全书分为14章和1个附录(附录A)。第1~5章主要介绍2D电子游戏的内容和电子游戏编程的核心概念;第6~14章主要介绍并讲解3D电子游戏编程的内容,其中第8章的内容既适用于2D环境下的电子游戏编程,也适用于3D环境下的电子游戏编程;附录A涵盖一些C++中的重要概念,包括引用、队列、指针、动态分配等。

    本书以实际游戏项目为主线,详细讲解了开发相应项目所需的知识及开发设计过程中采用的实现方法。

    本书适合使用C++语言进行电子游戏开发的初级或中级开发人员阅读,也可供使用其他语言开发游戏(或使用其他游戏开发框架开发游戏)的技术人员参考,还可作为高等院校相关专业的参考用书(本书所涵盖内容相当于大学课程设置中一个半学期的教学量)。 Sanjay Madhav毕业于美国南加州大学,获得了该校的计算机科学学士学位和硕士学位,目前在南加州大学攻读计算机科学博士学位。自2008年起,他一直在南加州大学任教,主讲多门编程和电子游戏编程课程。在此之前,他曾在多个电子游戏开发公司工作。他所服务过的公司有Electronic Arts、Neversoft和Pandemic Studios,所参与开发的游戏包括《荣誉勋章之血战太平洋(Medal of Honor Pacific Assault)》《托尼霍克极限滑板8(Tony Hawk’s Project 8)》《指环王:征服(Lord of the Rings: Conquest)》和《破坏者(The Saboteur)》。Sanjay还是《Game Programming Algorithms and Techniques》的作者和《Multiplayer Game Programming》的共同作者。 第 1章 游戏编程概述 1

    1.1 设置开发环境 1

    1.1.1 Microsoft Windows 1

    1.1.2 Apple macOS 2

    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 练习题1 26

    1.10.2 练习题2 26

    第 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 练习题1 45

    2.7.2 练习题2 45

    2.7.3 练习题3 46

    第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 基本碰撞检测 64

    3.4.1 圆与圆的交集 64

    3.4.2 创建一个CircleComponent子类 65

    3.5 游戏项目 66

    3.6 总结 68

    3.7 补充阅读材料 68

    3.8 练习题 68

    3.8.1 练习题1 69

    3.8.2 练习题2 69

    3.8.3 练习题3 70

    第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 练习题1 100

    4.7.2 练习题2 101

    第5章 开放图形库(OpenGL) 102

    5.1 初始化OpenGL 102

    5.1.1 设置OpenGL窗口 102

    5.1.2 OpenGL上下文和初始化GLEW 104

    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 练习题1 146

    5.10.2 练习题2 146

    第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 加载gpmesh文件 156

    6.3 绘制3D网格 157

    6.3.1 变换到剪辑空间,重访 158

    6.3.2 走出画家算法,进入Z缓冲 161

    6.3.3 BasicMesh着色器 164

    6.3.4 MeshComponent类 164

    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 练习题1 176

    6.8.2 练习题2 177

    第7章 音频 178

    7.1 引导音频 178

    7.1.1 FMOD 179

    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 练习题1 199

    7.7.2 练习题2 199

    第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 练习题1 223

    8.9.2 练习题2 223

    第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 练习题1 243

    9.9.2 练习题2 243

    第 10章 碰撞检测 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 练习题1 276

    10.7.2 练习题2 277

    10.7.3 练习题3 277

    第 11章 用户界面 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 使用Unicode 297

    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 练习题1 302

    11.9.2 练习题2 302

    11.9.3 练习题3 302

    第 12章 骨骼动画 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 练习题1 325

    12.6.2 练习题2 325

    第 13章 中间图形 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 练习题1 355

    13.7.2 练习题2 355

    第 14章 级别文件和二进制数据 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 练习题1 381

    14.7.2 练习题2 382

    附录A 中级C++回顾 383
  • 内容简介:
    本书主要介绍用C++进行3D电子游戏编程的方法,并深入探讨游戏开发人员在实际工作中所使用的相关技术和系统。全书分为14章和1个附录(附录A)。第1~5章主要介绍2D电子游戏的内容和电子游戏编程的核心概念;第6~14章主要介绍并讲解3D电子游戏编程的内容,其中第8章的内容既适用于2D环境下的电子游戏编程,也适用于3D环境下的电子游戏编程;附录A涵盖一些C++中的重要概念,包括引用、队列、指针、动态分配等。

    本书以实际游戏项目为主线,详细讲解了开发相应项目所需的知识及开发设计过程中采用的实现方法。

    本书适合使用C++语言进行电子游戏开发的初级或中级开发人员阅读,也可供使用其他语言开发游戏(或使用其他游戏开发框架开发游戏)的技术人员参考,还可作为高等院校相关专业的参考用书(本书所涵盖内容相当于大学课程设置中一个半学期的教学量)。
  • 作者简介:
    Sanjay Madhav毕业于美国南加州大学,获得了该校的计算机科学学士学位和硕士学位,目前在南加州大学攻读计算机科学博士学位。自2008年起,他一直在南加州大学任教,主讲多门编程和电子游戏编程课程。在此之前,他曾在多个电子游戏开发公司工作。他所服务过的公司有Electronic Arts、Neversoft和Pandemic Studios,所参与开发的游戏包括《荣誉勋章之血战太平洋(Medal of Honor Pacific Assault)》《托尼霍克极限滑板8(Tony Hawk’s Project 8)》《指环王:征服(Lord of the Rings: Conquest)》和《破坏者(The Saboteur)》。Sanjay还是《Game Programming Algorithms and Techniques》的作者和《Multiplayer Game Programming》的共同作者。
  • 目录:
    第 1章 游戏编程概述 1

    1.1 设置开发环境 1

    1.1.1 Microsoft Windows 1

    1.1.2 Apple macOS 2

    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 练习题1 26

    1.10.2 练习题2 26

    第 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 练习题1 45

    2.7.2 练习题2 45

    2.7.3 练习题3 46

    第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 基本碰撞检测 64

    3.4.1 圆与圆的交集 64

    3.4.2 创建一个CircleComponent子类 65

    3.5 游戏项目 66

    3.6 总结 68

    3.7 补充阅读材料 68

    3.8 练习题 68

    3.8.1 练习题1 69

    3.8.2 练习题2 69

    3.8.3 练习题3 70

    第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 练习题1 100

    4.7.2 练习题2 101

    第5章 开放图形库(OpenGL) 102

    5.1 初始化OpenGL 102

    5.1.1 设置OpenGL窗口 102

    5.1.2 OpenGL上下文和初始化GLEW 104

    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 练习题1 146

    5.10.2 练习题2 146

    第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 加载gpmesh文件 156

    6.3 绘制3D网格 157

    6.3.1 变换到剪辑空间,重访 158

    6.3.2 走出画家算法,进入Z缓冲 161

    6.3.3 BasicMesh着色器 164

    6.3.4 MeshComponent类 164

    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 练习题1 176

    6.8.2 练习题2 177

    第7章 音频 178

    7.1 引导音频 178

    7.1.1 FMOD 179

    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 练习题1 199

    7.7.2 练习题2 199

    第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 练习题1 223

    8.9.2 练习题2 223

    第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 练习题1 243

    9.9.2 练习题2 243

    第 10章 碰撞检测 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 练习题1 276

    10.7.2 练习题2 277

    10.7.3 练习题3 277

    第 11章 用户界面 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 使用Unicode 297

    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 练习题1 302

    11.9.2 练习题2 302

    11.9.3 练习题3 302

    第 12章 骨骼动画 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 练习题1 325

    12.6.2 练习题2 325

    第 13章 中间图形 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 练习题1 355

    13.7.2 练习题2 355

    第 14章 级别文件和二进制数据 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 练习题1 381

    14.7.2 练习题2 382

    附录A 中级C++回顾 383
查看详情
12
相关图书 / 更多
C++游戏编程创建3D游戏
C++边做边学
冯玉芬;周树功;母景琴;詹胜
C++游戏编程创建3D游戏
C++程序设计基础教程 第2版
刘厚泉 李政伟 葛欣
C++游戏编程创建3D游戏
C++编程这样学
胡芳
C++游戏编程创建3D游戏
C++程序设计案例教程(线上线下混合版)
杨卫明;李晓虹
C++游戏编程创建3D游戏
C++之旅(第3版)
[美]Bjarne Stroustrup(本贾尼 斯特劳斯特鲁普
C++游戏编程创建3D游戏
C++20代码整洁之道:可持续软件开发模式实践(原书第2版)
[德]斯蒂芬·罗斯(Stephan Roth)
C++游戏编程创建3D游戏
C++ Core Guidelines解析
杨文波 译;[德]赖纳·格林(Rainer Grimm)著 吴咏炜;何荣华;张云潮
C++游戏编程创建3D游戏
C++程序设计(第4版)
周会平;徐建军;王挺
C++游戏编程创建3D游戏
C++开发案例精讲
杨国兴 著
C++游戏编程创建3D游戏
C++程序设计实践教程(新国标微课版)
马光志
C++游戏编程创建3D游戏
C++程序设计基础与实践
牛园园;韩洁琼;李晓芳;吴成宇
C++游戏编程创建3D游戏
C++程序设计基础教程
丁卫平 程学云 陈文兰 主编;任红建 沈晓红 文万志 副主编
您可能感兴趣 / 更多
C++游戏编程创建3D游戏
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
C++游戏编程创建3D游戏
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
C++游戏编程创建3D游戏
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
C++游戏编程创建3D游戏
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
C++游戏编程创建3D游戏
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
C++游戏编程创建3D游戏
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
C++游戏编程创建3D游戏
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
C++游戏编程创建3D游戏
意大利文艺复兴新艺术史
[美]迈克尔·韦恩·科尔 著;[美]斯蒂芬·J·坎贝尔;邵亦杨
C++游戏编程创建3D游戏
汤姆素亚历险记:中小学生课外阅读快乐读书吧 儿童文学无障碍有声伴读世界名著童话故事
[美]马克·吐温
C++游戏编程创建3D游戏
老人与海 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]海明威
C++游戏编程创建3D游戏
养育的觉醒:全面激发孩子自驱力,教你如何心平气和做妈妈
[美]凯文·莱曼 著;唐晓璐 译;斯坦威 出品
C++游戏编程创建3D游戏
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译