本篇主要提供【套装2本】DirectX 12 3D 游戏开发实战+C++游戏编程入门 第4版 编程指南书籍电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
DirectX 12 3D 游戏开发实战
作者:[美] 弗兰克·D.卢娜(Frank D. Luna)
译者:王陈
编辑:罗子超
预计上市时间:2018-12-21
纸书定价:¥148.00
书号:978-7-115-47921-1
出版状态:印刷中
原书名:Introduction to 3D Game Programming with DirectX12
定价:148元
页数:600
印刷方式:黑白印刷
开本:16开
Direct3D是微软公司DirectX SDK集成开发包中的重要组成部分,是编写高性能3D图形应用程序的渲染库,适用于多媒体、娱乐、即时3D动画等广泛和实用的3D图形计算领域。
本书围绕交互式计算机图形学这一主题展开,着重介绍Direct3D的基础知识和着色器编程的方法,并介绍了如何利用Direct3D来实现各种有趣的技术与特效,旨在为读者学习图形技术奠定坚实的基础。本书包括3部分内容。第一部分介绍数学知识,涵盖向量代数、矩阵代数和变换等内容。这是贯穿全书的数学工具,是读者需要掌握的基础内容。第二部分重点介绍Direct3D的基础知识,展示用Direct3D来实现绘图任务的基本概念与技术,如渲染流水线、纹理贴图、混合、曲面细分等。第三部分则利用Direct3D来实现各种有趣的特效,如实例化与视锥体剔除、阴影贴图、环境光遮蔽等。
本书适合希望通过Direct3D来学习3D编程的C++中级程序员阅读,也可供已对Direct3D有一定了解或具有非DirectX API使用经验的3D程序员参考。
一部分 必备的数学知识
第 1章 向量代数 3
1.1 向量 3
1.1.1 向量与坐标系 4
1.1.2 左手坐标系与右手坐标系 5
1.1.3 向量的基本运算 6
1.2 长度和单位向量 8
1.3 点积 9
1.4 叉积 12
1.4.1 2D向量的伪叉积 13
1.4.2 通过叉积来进行正交化处理 13
1.5 点 14
1.6 利用DirectXMath库进行向量运算 15
1.6.1 向量类型 16
1.6.2 加载方法和存储方法 17
1.6.3 参数的传递 18
1.6.4 常向量 20
1.6.5 重载运算符 21
1.6.6 杂项 21
1.6.7 Setter函数 21
1.6.8 向量函数 23
1.6.9 浮点数误差 26
1.7 小结 28
1.8 练习 29
第 2章 矩阵代数 34
2.1 矩阵的定义 34
2.2 矩阵乘法 36
2.2.1 定义 36
2.2.2 向量与矩阵的乘法 37
2.2.3 结合律 37
2.3 转置矩阵 38
2.4 单位矩阵 38
2.5 矩阵的行列式 39
2.5.1 余子阵 40
2.5.2 行列式的定义 40
2.6 伴随矩阵 41
2.7 逆矩阵 42
2.8 用DirectXMath库处理矩阵 43
2.8.1 矩阵类型 44
2.8.2 矩阵函数 46
2.8.3 DirectXMath矩阵示例程序 47
2.9 小结 49
2.10 练习 49
第3章 变换 52
3.1 线性变换 52
3.1.1 定义 52
3.1.2 矩阵表示法 53
3.1.3 缩放 53
3.1.4 旋转 55
3.2 仿射变换 58
3.2.1 齐次坐标 58
3.2.2 仿射变换的定义及其矩阵
表示 58
3.2.3 平移 59
3.2.4 缩放和旋转的仿射矩阵 61
3.2.5 仿射变换矩阵的几何意义 61
3.3 变换的复合 62
3.4 坐标变换 63
3.4.1 向量的坐标变换 64
3.4.2 点的坐标变换 65
3.4.3 坐标变换的矩阵表示 66
3.4.4 坐标变换矩阵及其结合律 66
3.4.5 坐标变换矩阵及其逆矩阵 67
3.5 变换矩阵与坐标变换矩阵 68
3.6 DirectXMath库提供的变换函数 69
3.7 小结 70
3.8 练习 71
第二部分 Direct3D基础
第4章 Direct3D的初始化 77
4.1 预备知识 77
4.1.1 Direct3D 12概述 77
4.1.2 组件对象模型 78
4.1.3 纹理格式 79
4.1.4 交换链和页面翻转 80
4.1.5 深度缓冲 81
4.1.6 资源与描述符 83
4.1.7 多重采样技术的原理 85
4.1.8 利用Direct3D进行多重采样 87
4.1.9 功能级别 88
4.1.10 DirectX图形基础结构 89
4.1.11 功能支持的检测 92
4.1.12 资源驻留 93
4.2 CPU与GPU间的交互 94
4.2.1 命令队列和命令列表 94
4.2.2 CPU与GPU间的同步 98
4.2.3 资源转换 100
4.2.4 命令与多线程 101
4.3 初始化Direct3D 102
4.3.1 创建设备 102
4.3.2 创建围栏并获取描述符的
大小 104
4.3.3 检测对4X MSAA质量级别的
支持 104
4.3.4 创建命令队列和命令列表 105
4.3.5 描述并创建交换链 105
4.3.6 创建描述符堆 107
4.3.7 创建渲染目标视图 108
4.3.8 创建深度/模板缓冲区及其
视图 110
4.3.9 设置视口 114
4.3.10 设置裁剪矩形 115
4.4 计时与动画 116
4.4.1 性能计时器 116
4.4.2 游戏计时器类 117
4.4.3 帧与帧之间的时间间隔 118
4.4.4 总时间 120
4.5 应用程序框架示例 123
4.5.1 D3DApp类 123
4.5.2 非框架方法 126
4.5.3 框架方法 127
4.5.4 帧的统计信息 128
本书从游戏编程的角度介绍C++语言,既独具匠心又妙趣横生。
全书共10章,每章介绍C++语言的一个或数个重要的知识领域,同时通过一个游戏示例项目的开发进行实践和讲解。每章的结尾,会在一个游戏项目中将一些重要的概念组合起来。最后一章的游戏将综合运用本书介绍的概念与技巧,创建一个相对复杂的游戏,涵盖了本书介绍过的所有主要概念。随着学习的深入,读者将学会如何组织编程项目,如何将问题分解为可管理的子问题块,以及如何精炼代码。
本书适合任何想编写游戏的读者,主要针对初学者,并假设读者之前没有任何编程经验。通过阅读本书,并在实验中实践,读者将为掌握C++这门语言并为游戏编程打下坚实的基础。
第1章 类型、变量与标准I/O:
Lost Fortune 1
11 C++简介 1
111 使用C++编写游戏 1
112 生成可执行文件 2
113 错误处理 3
114 理解ISO标准 4
12 编写第一个C++程序 4
121 Game Over程序简介 4
122 注释 5
123 使用空白字符 6
124 包含其他文件 6
125 定义main()函数 7
126 通过标准输出显示
文本 7
127 语句的终止 8
128 从main()函数返回值 8
13 使用std名称空间 9
131 Game Over 20程序
简介 9
132 使用using指令 10
133 Game Over 30
程序简介 10
134 使用using声明 11
135 使用using的时机 11
14 使用算术运算符 12
141 Expensive Calculator
程序简介 12
142 加法、减法与乘法 13
143 理解整型与浮点型
除法 13
144 使用模除运算符 14
145 运算符的优先级 14
15 声明和初始化变量 14
151 Game Stats程序简介 14
152 基本类型 16
153 类型修饰符 16
154 变量声明 17
155 变量命名 18
156 变量的赋值 19
157 变量初始化 20
158 显示变量值 20
159 获取用户输入 20
1510 为类型定义新名称 21
1511 类型的选择 21
16 使用变量进行算术运算 21
161 Game Stats 20
程序简介 22
162 修改变量值 23
163 使用组合赋值运算符 23
164 递增运算符与递减
运算符 24
165 整数的溢出处理 25
17 使用常量 26
171 Game Stats 30
程序简介 26
172 使用常量 27
173 使用枚举类型 27
18 Lost Fortune简介 28
181 创建程序 29
182 从玩家获取信息 30
183 讲故事 30
19 本章小结 31
110 问与答 32
111 问题讨论 33
112 习题 34
第2章 真值、分支与游戏循环:
Guess My Number 35
21 理解真值 35
22 使用if语句 36
221 Score Rater程序简介 36
222 验证真与假 38
223 值的真与假 39
224 使用关系运算符 39
225 if语句的嵌套 40
23 使用else子句 40
231 Score Rater 20
程序简介 41
232 两种创建分支的方法 42
24 使用带else子句的if
语句序列 43
241 Score Rater 30程序
简介 43
242 创建带else子句的if
语句序列 44
25 使用switch语句 45
251 Menu Chooser程序
简介 46
252 创建多路分支 48
26 使用while循环 48
261 Play Again游戏简介 48
262 使用while循环 49
27 使用do循环 50
271 Play Again 20程序
简介 50
272 使用do循环 51
28 使用break和continue语句 52
281 Finicky Counter程序
简介 52
282 创建while(true)循环 53
283使用break语句退出
循环 53
284 使用continue语句跳转
到循环开始 54
285 使用break和continue
的时机 54
29 使用逻辑运算符 54
291 Designers Network程序
简介 55
292 使用逻辑与运算符 57
293 使用逻辑或运算符 58
294 使用逻辑非运算符 58
295 运算符的优先级 59
210 随机数的生成 60
2101 Die Roller程序简介 60
2102 调用rand()函数 61
2103 为随机数生成器确定
种子 61
2104 在一定范围内计算 62
211 理解游戏主循环 63
212 Guess My Number游戏
简介 64
2121 采用游戏主循环 64
2122 初始化游戏 65
2123 创建游戏主循环 66
2124 游戏结束 67
213 本章小结 67
214 问与答 68
215 问题讨论 69
216 习题 69
第3章 for循环、字符串与数组:
Word Jumble 71
31 使用for循环 71
311 Counter程序简介 72
312 使用for循环计数 73
313 在for循环中使用空
语句 74
314 for循环的嵌套 74
32 了解对象 75
33 使用string对象 77
331 String Tester程序简介 77
332 创建string对象 79
333 string对象的连接 79
334 使用size()成员函数 79
335 索引string对象 80
336 循环访问string对象 81
337 使用find()成员函数 81
338 使用erase()成员函数 82
339 使用empty()成员函数 83
34 使用数组 83
341 Hero's Inventory程序
简介 83
342 创建数组 85
343 数组的索引 86
344 使用数组元素的成员
函数 87
345 数组边界 87
35 理解C风格字符串 88
36 使用多维数组 89
361 Tic-Tac-Toe Board程序
简介 90
362 创建多维数组 91
363 多维数组的索引 92
37 Word Jumble程序简介 92
371 创建程序 93
372 选择单词 93
373 单词乱序 94
374 欢迎界面 95
375 进入游戏主循环 95
376 游戏结束 96
38 本章小结 96
39 问与答 97
310 问题讨论 99
311 习题 99
第4章 标准模板库:Hangman 100
41 标准模板库简介 100
42 使用vector 101
421 Hero's Inventory 20程序
简介 101
422 使用向量的准备工作 103
423 向量的声明 103
424 使用push_back()成员
函数 104
425 使用size()成员函数 104
426 向量的索引 105
427 调用元素的成员函数 105
428 使用pop_back()成员
函数 106
429 使用clear()成员函数 106
4210 使用empty()成员
函数 106
43 使用迭代器 107
431 Hero's Inventory 30程序
简介 107
432 迭代器的声明 109
433 循环访问向量 110
434 修改向量元素的值 111
435 访问向量元素的成员
函数