
自从我第一次接触DirectX 11以来已经快两年了. 我仍然记得,去年暑假期间,我被要求学习DirectX 11. 我花了几天的时间使用Dragon Book的源代码配置项目的操作环境,并且不得不忍受成千上万不可避免的编译警告. 没有. 其中的代码使用Microsoft DirectX SDK(2010年6月)开发工具包和内部的Effects 11框架,这些东西已经是8年前的产品了.
然后在8月18日,我首先将Github转到了Microsoft的FX11(以前称为Effects11)库. 它仍在更新中. 然后我找到了DirectX工具套件和DirectX SDK样本. 龙舒的方法是不同的. 然后,我意识到Microsoft实际上已经使用Windows SDK更新了DirectX的相关组件. 我正在使用Visual Studio 2019社区,该社区已经包含Windows SDK. 在阅读文档和示例一段时间后,我决定尝试编写一个全新的教程,以过渡到当前DirectX 11的较新版本.
但是我在转移过程中也遇到了许多需要解决的问题,例如:
如果不使用新的Effects 11框架,则缺少d3dx11.h,xnamath.h,dxerr.h,xnacollision.h等旧头文件将导致编译器警告: X4717: D3DCompiler_47不推荐使用的Effects,提示效果11可能不受D3DCompiler支持. 着色器需要手动管理,并且HLSL的编写与FX有所不同(例如,无法在HLSL中直接定义Sampler). 与Effects 11相关的Dragon 11示例代码基本上必须自行编写
您可以在以下教程中找到相应的解决方案/替代解决方案,这里没有一一列出.
非常重要!由于本系列文章着重于项目实践,因此它不适合零基础的初学者. 在学习本教程之前:
熟悉C ++,最好是C ++ 11,语言基础决定了个人代码的质量. 您已经掌握了线性代数和3D数学的基础知识. 第3章了解渲染管道的基础. 您可以阅读Dragon Book 11的第4至5章,并使用游戏引擎进行开发,或者您以前已经学习过DirectX9 / 11或OpenGL来自己学习基本的HLSL语法.
本教程的特点如下:
它完全独立于DirectX SDK,大大降低了配置难度,并且与Win7-Win10平台兼容. 它使用本机HLSL编译器,而不是使用FX11框架和fx5.0来详细解释一系列Direct3D 11 API.
尽管这里提供了许多学习演示,但鼓励每个人在学习时构建自己的软引擎,并进行更多的动手实践. 只有您踩的坑是您自己的.
如何使DirectX 11学习路径更流畅?以下是一些调试建议:
如果您还没有学习过单步调试或断点调试,则在调试程序时必须首先学习注意输出窗口(源在调试). 一些与D3D相关的功能故障将在此处提供非常详细的反馈. 了解这一点可以节省大量开发时间,并避免不必要的搜索,这一点非常重要!了解如何使用Visual Studio附带的图形调试器. 如果您正在使用其他图形调试器,则可以跳过它. 擅长使用某些函数返回的HRESULT类型错误代码,可以使用我这一边的DXTrace库来了解错误代码的具体含义,也可以使用DirectX SDK中的Utilities \ bin \ x86 \ DXErr.exe来查询
在尝试使用显示适配器创建D3D设备时,会引发错误:
{4: 4: e: 2: 2: 6: 3: 1: 1: c: c: 3: 5: 2: 8: b: 9: 1: a: 5: 0: f: b: f: c: 5: 5: d: 2: 0: 2: d: e)注意:
1. 考虑到DXTK库仅使用键盘和鼠标类以及其中的纹理加载directx sdk 开发包,现在已将其提取并单独使用.
2. 本教程在Github上有特殊的支持项目源代码,读者可以自己下载.
3. 现在,有些章节将有一些练习题directx sdk 开发包,除了《龙书》中的某些部分可供选择之外,我还亲自尝试了一些问题.
![]()
4. 本教程并不代表Direct3D的所有方面. 您还需要善于使用下面参考中提供的MSDN文档来查询信息.
由于博客作者即将开始准备入学考试,因此本教程将被暂停很长时间.
GitHub项目浏览和下载
欢迎加入QQ小组: 727623616可以一起讨论DX11,并且可以在此处报告任何问题.
语言:
-C ++ 11和少量C ++ 14
-HLSL Shader Model 5.0
目前,所有项目都不需要依赖第三方库的编译. 而是从官方Microsoft项目中将以下模块提取到项目中:
DirectXTex / DDSTextureLoader
DirectXTex / WICTextureLoader
DirectXTex / ScreenGrab
DXTK /鼠标(在源代码上进行了修改)
DXTK /键盘(源已修改)
注意:
1. 对于Win10系统,请选择DirectX11 With Windows SDK.sln打开,该解决方案基于VS2017
2. 对于Win7和Win8.x系统,请选择“带有Windows SDK(Win7).sln的DirectX11”打开,该解决方案基于2015年
3. 低于10.0.16299.0的Windows SDK需要在项目设置-配置属性-C / C ++-语言-遵从模式下设置为“否”才能正常编译. 或者您可以更改为Windows SDK的较新版本

4. 如果您没有在Win7系统上安装SP1和KB2670838修补程序,则将看不到Direct2D文本显示.
关于dxerr库的替代HR宏
ComPtr智能指针
各种用于编译HLSL着色器的方法
深入了解HLSL常量缓冲区打包规则
Visual Studio图形调试器详细用法教程
关于HLSL中矩阵的内存布局和mul函数的讨论
深入了解和使用2D纹理资源
深入了解和使用缓冲区资源
入门
01 DirectX11初始化
02顶点/像素着色器的创建,顶点缓冲区
03索引缓冲区,常量缓冲区
04使用DirectX工具包帮助开发(可跳过)
05键盘和鼠标输入
06 DirectXMath数学库
07添加照明和常见的几何模型

08 Direct2D和Direct3D的互操作性并使用DWrite显示文本
09纹理映射和采样器状态
10个
高级文章
11种混合状态和光栅化状态
12深度/模板状态,平面镜反射图
13个简单的效果框架(阴影效果图)的动手实现
14次深入测试
15个几何着色器的初步探索
16利用几何着色器的可选流输出阶段来帮助绘制多个分形
带有几何着色器的17公告板效果
使用DirectXCollision库检测18个碰撞
19模型加载: 以obj格式读取并使用二进制文件提高读取效率
20种硬件实例化和视锥裁剪
21个鼠标采摘
22多维数据集映射: 静态skybox的读取和实现
23多维数据集映射: 动态天空盒的实现

24纹理渲染(RTT)技术的应用
25张法线贴图
高级文章
26个计算着色器: 入门
27种计算着色器: 位元排序
参考
一些引用的网站:
Direct3D 11图形(Windows SDK)
DirectX SDK示例
Rastertek--DX11
DirectX工具套件
Windows SDK
DirectXMath
DirectXTex
龙书网站
DXUT
HLSL
参考书:
使用DirectX 11进行3D游戏编程的简介
Direct3D 11的实用渲染和计算
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-146297-1.html
伊拉克是挺可怜的