无法找出DirectX11的着色器?

Ace*_*g45 1 c++ windows directx-11 direct3d11

所以,我不知道如何使用着色器.编码它们很容易,但实际上没有使用它们.MSDN对我来说真的没用,这意味着他们有最糟糕的教程.我正在阅读Frank Luna的Direct3d 11书,我终于到了实际绘制内容的部分.令人兴奋的,除了它不起作用的事实.他的BoxDemo - 我确信3年前制作这本书的时候已经工作了,但是现在有了所有新的DirectX东西 - 省略了DirectX SDK,现在使用"Windows SDK",FX被弃用,不再有D3DX库......太令人沮丧了.我继续并降级到DirectX 2010 SDK - 只是这样我才能真正使用教程.几乎每个D3D教程都使用D3DX库.

无论如何......现在回答我的问题.Visual Studio可以选择生成.hlsl文件.但是,它还具有make .fx文件的能力(如果你只是在它创建.fx文件的文件名末尾键入.fx).因此,我可以使用弃用的.fx方法,并学习如何轻松地使用它来教授它 - 或者我可以学习新的 HLSL方法,并且在没有教程的情况下学习它是最艰难,最令人沮丧的.

我知道他们都使用HLSL语言.但它们在程序中的使用方式不同.(CreateEffectFromMemory,CompileFromFile等).我有点希望学习新方法,但如果我不这样做就好了.虽然,我几乎有一个使用.fx文件的整个程序.我相信它会起作用,但我只需要帮助构建和利用"Effects11.lib".

对于拖动帖子很抱歉 - 事实上,我确信我暂时不会得到任何回复 - 如果我确实得到任何回复 - 由于长度.我非常沮丧,因为学习DirectX让我的编程生涯在过去的一个月,2个月内处于大规模的中断状态.请,谢谢你的帮助

Chu*_*urn 5

文件扩展名为.hlslvs. .fx是任意的.这就像之间的差异.cppcxx.历史.fx上用于包含顶点着色器,像素着色器和效果(FX)技术/过程的HLSL着色器,并且.hlsl是不包含效果(FX)技术/过程的文件,但仅仅是一种约定.那里有很多用过的东西.

重要的是如何编译文件.如果使用fx_5_0,则需要Effects 11运行时才能实际使用它们.这本身并没什么特别的.它实际上只为compile您为Effects(FX)技术/传递提供的每个语句组合调用相同的编译器,并将其与一些元数据捆绑在一起.事实上,你可以经常调用FXC编译器上.fx包含的技术文件/使用像传递vs_5_0或者ps_4_0它将编译相应的特定阶段着色器,如果你得到的参数恰到好处.

RE:效果11

Effects 11的主要问题是它在运行时需要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,等等.如果您想要使用它,只要您了解它的局限性就由您决定.

最新版本的Effects 11是在CodePlex上,我解决了那里的限制.有一些简单的教程使用它,以及一些示例.此版本的Effects 11实际上根本不需要传统的DirectX SDK.

简而言之,YMMV适用于Effects 11,但您仍然可以将它用于Win32桌面应用程序,适用于Windows 8.1的Windows应用商店应用程序,Windows Phone 8.1应用程序以及理论上的Xbox One应用程序.

RE:D3DX

我可以理解这种挫败感,但这是书籍出版业和技术书籍在变化方面落后于球的常见问题.DirectX 11是在2008年推出的.转换到Windows 8 SDK的时间是在2012年,大多数开发人员完全错过了它.我在博客上有一些关于那本书的笔记.

有关"现代"替代品的完整列表,请参阅没有D3DX的生活.

对于Win32桌面应用程序,您可以继续使用旧版DirectX SDK.需要注意的主要事情是使用随VS 2012和VS 2013在Windows 8.x的SDK中,includelib路径的订单逆转比他们与VS 2010参见MSDN了解详细信息.

RE:学习Direct3D 11

你看过DirectX工具包了吗?

Direct3D入门11

Direct3D功能级别

HLSL,FXC和D3DCompile

至于教程和示例,请尝试使用DirectX SDK示例目录.