C++ Can';我想不出DirectX11的着色器?
所以,我不知道如何使用着色器。编写它们很容易,但实际上并没有使用它们。MSDN对我来说真的没用,这意味着他们有最差的教程。我现在正在读弗兰克·卢纳的Direct3d 11书,我终于开始真正画东西了。令人兴奋,除了它不起作用之外。他的BoxDemo——我肯定在3年前写这本书的时候就开始工作了,但现在有了所有新的DirectX东西——省略了DirectX SDK,现在使用“Windows SDK”,FX被弃用,没有更多的D3DX库。。。太令人沮丧了。我继续,并降级到DirectX 2010 SDK-只是为了让我可以实际使用教程。几乎每个D3D教程都使用D3DX库 无论如何。。。现在回答我的问题。VisualStudio有一个生成.hlsl文件的选项。但是,它还具有生成.fx文件的功能(如果您只需在它创建的.fx文件名的末尾键入.fx)。 因此,我可以使用弃用的.fx方法,并学习如何在所有的教程中轻松地使用它——或者我可以学习新的HLSL方法,并在没有教程的情况下尝试学习它,这是最困难、最令人沮丧的 我知道他们都使用HLSL语言。但它们在程序中的使用方式不同。(CreateEffectFromMemory、CompileFromFile等)。 我有点希望学习新的方法,但如果我不这样做,那就好了。尽管如此,我几乎有一个使用.fx文件的完整程序。我确信它会起作用,但我只需要帮助构建和利用“Effects11.lib”C++ Can';我想不出DirectX11的着色器?,c++,windows,directx-11,direct3d11,C++,Windows,Directx 11,Direct3d11,所以,我不知道如何使用着色器。编写它们很容易,但实际上并没有使用它们。MSDN对我来说真的没用,这意味着他们有最差的教程。我现在正在读弗兰克·卢纳的Direct3d 11书,我终于开始真正画东西了。令人兴奋,除了它不起作用之外。他的BoxDemo——我肯定在3年前写这本书的时候就开始工作了,但现在有了所有新的DirectX东西——省略了DirectX SDK,现在使用“Windows SDK”,FX被弃用,没有更多的D3DX库。。。太令人沮丧了。我继续,并降级到DirectX 2010 SDK-
很抱歉在帖子上拖了这么长时间——事实上,我确信我会在一段时间内收到任何回复——如果我真的收到了回复的话——因为篇幅太长。我很沮丧,因为学习DirectX使我的编程生涯在过去的两个月里陷入了巨大的停顿。请并感谢您的帮助文件扩展名
.hlsl
与.fx
是任意的。这就像.cpp
和cxx
之间的区别。历史上,.fx
用于HLSL着色器,其中包括顶点着色器、像素着色器和效果(fx)技术/过程,.HLSL
是一个不包括效果(fx)技术/过程的文件,但只是一个约定。这两种方法都有很多
重要的是文件如何编译。如果使用fx_5_0
,则需要Effects 11运行时才能实际使用它们。这本身真的没什么特别的。它只需为您为特效(FX)技术/过程提供的compile
语句的每个组合调用相同的编译器,并将其与一些元数据捆绑在一起。事实上,您通常可以使用vs_5_0
或ps_4_0
之类的方法在包含技术/和过程的.fx
文件上调用FXC编译器,如果参数正确,它将编译相应的特定于阶段的着色器
RE:effects 11
Effects 11的主要问题是,它在运行时需要D3DCompile DLL,因为它使用D3DCompile DLL提取连接状态和着色器所需的元数据。当您实际部署应用程序时,此D3DCompile DLL不可用于Windows 8.0和Windows phone 8.0中的Windows应用商店应用程序,仅在您开发应用程序时可用。因此,Effects 11不适用于这些平台
对于Windows 8.1或Windows phone 8.1的Windows应用商店应用程序来说,这不再是一个技术问题,但对fx_5_0
的编译器支持仍然不受欢迎。其他配置文件vs_5_0
等都存在一些问题。因此,只要您了解它的局限性,是否使用它取决于您自己
特效11的最新版本已启用,我将讨论其中的限制。有一些简单的方法可以使用它,还有一些。这个版本的Effects 11实际上根本不需要传统的DirectX SDK
简而言之,YMMV w.r.t.将影响11,但您仍然可以将其用于Win32桌面应用程序、Windows 8.1的Windows应用商店应用程序、Windows phone 8.1应用程序,理论上也可以用于Xbox One应用程序。
RE:D3DX
我可以理解这种挫折感,但这是一个普遍的问题,因为图书出版业和技术书籍在变化方面远远落后于形势。DirectX 11早在2008年就推出了。向Windows8SDK的过渡发生在2012年,大多数开发人员(更不用说图书出版商)错过了它。我桌上有那本书的笔记
有关“现代”备选方案的完整列表,请参阅
对于Win32桌面应用程序,您可以继续使用旧版DirectX SDK。需要注意的主要问题是,对于VS 2012和VS 2013附带的Windows 8.x SDK,include
和lib
路径顺序与VS 2010相反。有关详细信息,请参阅
RE:学习Direct3D 11
你看过报纸了吗
至于教程和示例,请尝试。文件扩展名
.hlsl
与.fx
是任意的。这就像.cpp
和cxx
之间的区别。历史上,.fx
用于HLSL着色器,其中包括顶点着色器、像素着色器和效果(fx)技术/过程,.HLSL
是一个不包括效果(fx)技术/过程的文件,但只是一个约定。这两种方法都有很多
重要的是文件如何编译。如果使用fx_5_0
,则需要Effects 11运行时才能实际使用它们。这本身真的没什么特别的。它只需为您为特效(FX)技术/过程提供的compile
语句的每个组合调用相同的编译器,并将其与一些元数据捆绑在一起。事实上,您通常可以在.fx
文件c上调用FXC编译器