DirectX11 杂项篇
无
X_Jun96
与DX结下的不解之缘
展开
-
DirectX11--深入理解Effects11、使用着色器反射机制(Shader Reflection)实现一个复杂Effects框架
前言如果之前你是跟随本教程系列学习的话,应该能够初步了解Effects11(现FX11)的实现机制,并且可以编写一个简易的特效管理框架,但是随着特效种类的增多,要管理的着色器、资源等也随之变多。如果写了一套由多个HLSL着色器组成特效,就仍需要在C++端编写与HLSL相对应的特效框架,这样写起来依然是十分繁杂。以前学习龙书的DirectX11时,里面使用的正是Effects11框架,不得不承认用...原创 2020-03-28 10:41:15 · 816 阅读 · 0 评论 -
DirectX11--HLSL语法入门
前言编写本内容仅仅是为了完善当前的教程体系,入门级别的内容其实基本上都是千篇一律,仅有一些必要细节上的扩充。要入门HLSL,只是掌握入门语法,即便把HLSL的全部语法也吃透了也并不代表你就能着色器代码了,还需要结合到渲染管线中,随着教程的不断深入来不断学习需要用到的新的语法,然后尝试修改着色器,再根据实际需求自己编写着色器来实现特定的效果。注意:在翻阅HLSL文档的时候,要避开Effects...原创 2020-02-15 17:17:27 · 5328 阅读 · 1 评论 -
DirectX11--使用DirectX Tool Kit帮助开发
回到 DX11 Without DirectX SDK–使用Windows SDK来进行开发DirectX Tool Kit下载DirectX Tool Kit是一个包含许多类的集合,用于为公共Windows平台编写Direct3D 11 C++代码。里面包含如下可用的头文件(基本上都在名称空间DirectX中): 头文件 描述 Audio.h 使用了XAud...原创 2018-05-13 22:02:01 · 3359 阅读 · 0 评论 -
DirectX11--深入理解与使用缓冲区资源
前言在Direct3D 11中,缓冲区属于其中一种资源类型,它在内存上的布局是一维线性的。根据HLSL支持的类型以及C++的使用情况,缓冲区可以分为下面这些类型:顶点缓冲区(Vertex Buffer)索引缓冲区(Index Buffer)常量缓冲区(Constant Buffer)有类型的缓冲区(Typed Buffer)结构化缓冲区(Structured Buffer)追加/消...原创 2019-02-19 17:48:58 · 2783 阅读 · 3 评论 -
DirectX11--深入理解与使用2D纹理资源
前言写教程到现在,我发现有关纹理资源的一些解说和应用都写的太过分散,导致连我自己找起来都不方便。现在决定把这部分的内容整合起来,尽可能做到一篇搞定所有2D纹理相关的内容,其中包括:DDSTextureLoader和WICTextureLoader2D纹理的一般创建方法2D纹理数组的一般创建方法2D纹理立方体的一般创建方法纹理子资源纹理资源的完整复制纹理子资源指定区域的复制纹理从...原创 2019-01-14 21:06:15 · 7740 阅读 · 6 评论 -
DirectX11--HLSL常量缓冲区打包规则
HLSL常量缓冲区打包规则1. C++中的结构体数据是以字节流的形式传输给HLSL的例1.12. HLSL常量缓冲区中的向量不允许拆分例2.1例2.23. HLSL常量缓冲区中多个相邻的变量若有空缺则优先打包进同一个4D向量中例3.1例3.24. 对于在常量缓冲区的结构体,也会进行打包操作例4.1例4.25. 对于在常量缓冲区的数组,需要特殊对待例5....原创 2018-07-30 13:01:37 · 1390 阅读 · 0 评论 -
Visual Studio图形调试器详细使用教程(基于DirectX11)
前言准备工作截取一帧画面图形调试器预览事件列表查看传入的缓冲区数据查看着色器资源视图中的纹理资源查看资源历史记录跟踪渲染管线各个阶段的状态管道阶段查看深度缓冲区资源查看该帧图片下某一像素的绘制历史着色器调试着色器反汇编总结前言对于DirectX程序开发者来说,学会使用Visual Studio Graphics Debugger(图形调试器...原创 2018-09-13 21:24:55 · 4927 阅读 · 1 评论 -
DirectX11--HLSL中矩阵的内存布局和mul函数探讨
前言说实话,我感觉这是一个大坑,不知道为什么要设计成这样混乱的形式。在我用的时候,以row_major矩阵,并且mul函数以向量左乘矩阵的形式来绘制时的确能够正常显示,并不会有什么感觉。但是也有人会遇到明明传的矩阵没有问题,却怎么样都绘制不出的情况;或者使用列矩阵,在mul函数用向量左乘的形式却又可以绘制出来的疑问。因此本文目的就是要扫清这些障碍。ps. 本问题由淡一抹夕霞提供。Direc...原创 2018-10-21 17:09:22 · 1227 阅读 · 6 评论 -
DirectX11--HLSL编译着色器的三种方法
前言本教程不考虑Effects11(FX11),而是基于原始的HLSL。目前编译与加载着色器的方法如下:使用Visual Studio中的HLSL编译器,随项目编译期间一同编译,并生成.cso(Compiled Shader Object)对象文件,在运行期间加载该文件以读取字节码。使用Visual Studio中的HLSL编译器,随项目编译期间一同编译,并生成.inc或.h的头文件,着...原创 2018-12-15 22:44:05 · 3656 阅读 · 0 评论 -
DirectX11--HR宏关于dxerr库的替代方案
DirectX11 With Windows SDK完整目录欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。综述参考文章:https://blogs.msdn.microsoft.com/chuckw/2012/04/24/wheres-dxerr-lib/在龙书11中所使用的HR宏和dxerr库是一个比较实用的错误原因追踪工具。D3D中的某些函...原创 2018-12-25 11:12:19 · 1679 阅读 · 0 评论 -
DirectX11--ComPtr智能指针
综述DirectX11 With Windows SDK完整目录欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。IUnknown接口类DirectX11的API是由一系列的COM组件来管理的,这些前缀带I的接口类最终都继承自IUnknown接口类。IUnknown的三个方法如下:方法描述IUnknown::AddRef内部...原创 2018-12-29 11:16:19 · 2464 阅读 · 0 评论 -
DirectX11--教程项目无法编译、运行的解决方法
综述对于Win10系统的大多数用户来说,可以直接编译本教程对应的项目并运行。但也有部分用户由于某些原因可能会出现无法编译的情况。DirectX11 With Windows SDK完整目录欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。与当前项目的Windows SDK版本不一致对于Visual Studio 2017,你可以点击项目-重定解决...原创 2018-12-29 11:17:29 · 2239 阅读 · 0 评论