2014-12-05 77 views
1

所以,我不知道如何使用着色器。编码它们很容易,但实际上并不使用。 MSDN对我来说真的没用,这意味着他们有最糟糕的教程。我目前正在阅读弗兰克卢娜的Direct3d 11书,我终于到了真正能够画画的地方。令人兴奋的,除了它工作的事实。他的BoxDemo - 我确信在3年前制作这本书的时候已经工作了,但现在已经有了所有新的DirectX的东西 - 省略了DirectX SDK,现在使用“Windows SDK”,FX被弃用,没有更多的D3DX库...太令人沮丧了。我继续降级到DirectX 2010 SDK - 这样我才能真正使用教程。几乎每个D3D教程都使用D3DX库。找不到DirectX11着色器?

无论如何...现在我的问题。 Visual Studio可以选择制作.hlsl文件。但是,它也具有make .fx文件的能力(如果您只是在文件名末尾键入.fx,则会创建.fx文件)。 因此,我可以使用已弃用的.fx方法,并学习如何使用它,所有教程都可以轻松使用它 - 或者我可以学习HLSL的新的方法,并且尝试使用HLSL学习最困难,最令人沮丧的时间没有教程。

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

对不起,在邮件上拖 - 事实上,我相信我会在一段时间内不会收到任何回复 - 如果我确实收到了 - 由于篇幅所限。我非常沮丧,因为学习DirectX已经让我的编程生涯在过去的一个月,两个月里陷入了巨大的停滞。请和谢谢你的任何帮助

回答

5

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

重要的是该文件是如何编辑。如果您使用fx_5_0,则需要使用Effects 11运行时才能实际使用它们。这本身并没有什么特别之处。它实际上只是针对您为效果(FX)技术/传递提供的compile声明的每个组合调用相同的编译器,并将它与一些元数据捆绑在一起。实际上,您通常可以在包含技巧的文件.fx上调用FXC编译器,并使用类似vs_5_0ps_4_0的文件进行传递,如果您获得正确的参数,它将编译相应的特定于舞台的着色器。

RE:Effects11

的主要问题与影响11是它需要的D3DCompile DLL在运行时,因为它使用的是提取要连接的状态和着色器所需的元数据。此D3DCompile DLL不适用于Windows应用商店的Windows 8.0和Windows Phone 8.0,当您实际上部署了该应用时,仅当您在开发该应用时。因此,效果11不适用于这些平台。

这不再是针对Windows 8.1或Windows Phone 8.1的Windows应用商店应用程序的技术问题,但编译器支持fx_5_0仍被弃用。对于其他配置文件vs_5_0等,有一些问题已经修复。如果您希望使用或不使用它,则取决于您,只要您了解它的局限性即可。

效果11的最新版本是CodePlex,我解决了这里的限制。有一些简单的tutorials使用它,以及一些samples效果11实际上根本不需要传统的DirectX SDK。

总之,YMMV w.r.t.到效果11,但您仍然可以将它用于Win32桌面应用程序,用于Windows 8.1的Windows应用商店应用程序,Windows Phone 8.1应用程序以及理论上与Xbox One应用程序一起使用。

RE:D3DX

我可以理解的沮丧,但它与图书出版业和技术书籍是在变化的角度身后球方式的共同课题。 DirectX 11于2008年推出。到Windows 8 SDK的过渡是在2012年进行的,大多数开发人员更少地完成了书籍发布。我在blog的那本书上有一些笔记。请参阅Living without D3DX

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

RE:学习的Direct3D 11

你是否看了DirectX Tool Kit

Getting Started with Direct3D 11

Direct3D Feature Levels

HLSL, FXC, and D3DCompile

至于教程和样本,尝试DirectX SDK Samples Catalog

+0

感谢您的彻底解答!真的清除了FX和hlsl之间的一些东西。 这个列表可能会派上用场 - 也许当我转移到明年的Window 10时。最后,我一直在使用DirectX一次又一次地遇到许多问题。我不放弃,不。当然不是。它只是为我构建了一个更大的挑战。我明白什么是什么,但代码是什么让我。 再次感谢帖子! – AceDawg45 2014-12-06 03:11:19