从第一次接触DirectX 11到现在已经有一年时间了。还记得去年的这个时候被要求学习DirectX 11,在用龙书的源码配置项目运行环境的时候都花了好几天的时间才搞定,还得忍受上千个编译警告,不得不视警告为无物。而且里面的代码使用了Microsoft DirectX SDK(June 2010)开发包和里面的Effects 11框架,这些东西都已经是8年前的产物了。
然后在18年5月的时候,我先是在Github上翻到了微软对Effects 11库一直都还在更新,然后发现了DirectX Tool Kit和DirectX SDK Samples,里面提供的教程写法和龙书的做法不一样。然后我才明白,微软其实已经将DirectX的相关组件随同Windows SDK一起更新,并且早就已经放弃了对DirectX SDK的任何更新。而我现在使用的是Visual Studio 2017 Community,里面就已经包含了Windows SDK。经过一段时间的文档阅读后,决定尝试编写一个全新的教程来过渡到当前DirectX 11的较新版本。当然,更新进度也受限于我当前的学习进度。
但是在转移的时候也遇到了很多需要解决的问题,比如:
1. 没有了诸如d3dx11.h
, xnamath.h
, dxerr.h
, xnacollision.h
, DInput.h
等等头文件
2. 使用新的Effects 11框架的话引发编译器警告,说fx5.0未来会被抛弃
3. 不使用Effects 11框架就意味着需要逐个编译着色器并手工绑定到渲染管线上
4. 龙书11的示例代码有关Effects 11的部分都不能看了,基本上还得靠自己重新编写
这些问题都可以下面的教程中找到对应的解决/替代方案,在这里就不一一列举了。
目录
由于该文章系列注重的是项目实践,对一些数学部分不会过于详细的描述。因此该教程主要面向的用户是:
1. 已经掌握了线性代数的基础部分(上过线性代数课程,阅读过龙书1-3章,或3D数学基础一书)
2. 已经初步掌握过一些HLSL基础(该教程不一定会提供HLSL基础)
3. 苦于配置龙书的示例代码,寻求更好的解决方案
4. 打算脱离Effects 11框架,使用HLSL编译器
主题 | 版次 | 创建时间 | 修改时间 |
---|---|---|---|
01 DirectX11初始化 | 第5版 | 2018/5/12 | 2018/8/18 |
02 顶点/像素着色器的创建、顶点缓冲区 | 第10版 | 2018/5/13 | 2018/8/30 |
03 索引缓冲区、常量缓冲区 | 第7版 | 2018/5/13 | 2018/8/20 |
04 使用DirectX Tool Kit帮助开发 | 第3版 | 2018/5/13 | 2018/8/22 |
05 键盘和鼠标输入 | 第3版 | 2018/5/14 | 2018/7/28 |
06 DirectXMath数学库 | 第1版 | 2018/5/15 | 2018/5/15 |
07 添加光照与常用几何模型 | 第7版 | 2018/5/28 | 2018/8/8 |
08 Direct2D与Direct3D互操作性以及利用DWrite显示文字 | 第4版 | 2018/5/29 | 2018/8/8 |
09 纹理映射与采样器状态 | 第7版 | 2018/7/12 | 2018/8/11 |
10 摄像机类 | 第3版 | 2018/7/16 | 2018/8/8 |
11 混合状态与光栅化状态 | 第3版 | 2018/7/21 | 2018/8/8 |
12 深度/模板状态 | 第4版 | 2018/7/28 | 2018/8/8 |
13 抛弃FX11并初步实现BasicFX类 | 第4版 | 2018/7/29 | 2018/8/8 |
14 深度测试 | 第2版 | 2018/8/5 | 2018/8/6 |
15 几何着色器初探 | 第1版 | 2018/8/8 | 2018/8/8 |
16 利用几何着色器可选的流输出阶段帮助绘制多种分形 | 第1版 | 2018/8/11 | 2018/8/11 |
17 利用几何着色器实现公告板效果 | 第2版 | 2018/8/19 | 2018/8/20 |
18 使用DirectXCollision库进行碰撞检测 | 第1版 | 2018/8/29 | 2018/8/29 |
杂项 | 版次 | 修改时间 |
---|---|---|
深入理解HLSL常量缓冲区打包规则 | 第1版 | 2018/7/27 |
参考到的一些网站:
Direct3D 11 Graphics(Windows SDK)
参考书籍:
Introduction to 3D Game Programming with DirectX 11
Practical Rendering and Computation with Direct3D 11