如何在Visual Studio C#项目中编译HLSL着色器文件

7

我希望在我的Visual Studio 2015 C#项目中编译一个hlsl着色器文件。使用C++项目,如果我添加一个hlsl文件,就可以立即获得正确的属性,如下图所示:

HLSL build properties in C++

然而,当我想在我的C#项目中实现这一点(使用SharpDX)时,我没有得到这样的选项,因此无法将其编译为我的项目的CSO文件。有人知道解决方法吗?
2个回答

10
现在有一个NuGet包,Microsoft.HLSL.CSharpVB,它为C#和VB项目添加了对HLSL着色器属性的支持:

这个包在C#和VB项目中安装了HLSL编译的MSBuild支持。

请重新加载项目或重启Visual Studio,以使新的shader“Build Actions”出现在属性窗口中。


3
您无法直接在C#项目中进行此操作,因为Visual Studio的HLSL编译内置集成仅适用于C++项目且只能从C++项目中访问。
虽然您可以在同一解决方案中添加一个空的C++项目,然后从那里添加和配置您的HLSL文件,然后将生成的cso文件作为内容引用到您的C#项目中(并添加从C#-> C++项目的项目依赖)...通过一些MSBuild技巧,您还可以自动将生成的内容复制到您的C#项目中。

1
这确实是一个不错的解决方法。将HLSL文件的输出对象文件名设置为$(SolutionDir)<main project name>%(Filename).cso。然后将cso文件作为内容文件添加到主项目中,并使用“始终复制”或“仅在较新时复制”即可解决问题。 - N Jacobs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接