Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置MSBuild以在C#WPF项目中生成某些HLSL着色器代码?_C#_Wpf_Visual Studio_Msbuild_Hlsl - Fatal编程技术网

如何设置MSBuild以在C#WPF项目中生成某些HLSL着色器代码?

如何设置MSBuild以在C#WPF项目中生成某些HLSL着色器代码?,c#,wpf,visual-studio,msbuild,hlsl,C#,Wpf,Visual Studio,Msbuild,Hlsl,目前我正在从事一个C#WPF项目,该项目涉及ShaderEffect 在有关此类使用的联机教程中,HLSL着色器代码要么使用fxc.exe手动构建(即直接将着色器对象导入项目),要么在运行时使用DirectX包装器(如SharpDX)进行编译 我希望在构建时将着色器代码编译为MSBuild处理的构建任务之一,以便(1)轻松地将着色器代码合并到版本控制中,(2)防止项目膨胀 显然有两种方法可以实现这一点,尽管这两种方法都不完整 在单独的C++项目中包装着色器代码 着色器代码可以包含在一个单独的C+

目前我正在从事一个C#WPF项目,该项目涉及
ShaderEffect

在有关此类使用的联机教程中,HLSL着色器代码要么使用fxc.exe手动构建(即直接将着色器对象导入项目),要么在运行时使用DirectX包装器(如SharpDX)进行编译

我希望在构建时将着色器代码编译为MSBuild处理的构建任务之一,以便(1)轻松地将着色器代码合并到版本控制中,(2)防止项目膨胀

显然有两种方法可以实现这一点,尽管这两种方法都不完整

  • 在单独的C++项目
  • 中包装着色器代码

    着色器代码可以包含在一个单独的C++项目中,MSBudio支持在编译时编译HLSL。 与SharpDX捆绑的示例项目就是这样构建的

    然而,对我来说,这听起来太迂回了。为什么我需要一个C++项目来解决一个绝对零行的C++代码?
  • 使用
    Microsoft.HLSL.CSharpVB
  • Microsoft.HLSL.CSharpVB
    是Microsoft提供的一个(似乎已废弃)NuGet软件包,它为HLSL文件添加生成操作。 我可以确认,在应用构建操作时,HLSL编译器确实被调用,但它不能与WPF一起工作,因为WPF需要SM3.0(或更低?),显然,我无法使用此包将目标SM从最新版本(在我的系统上是SM5.0)更改为新版本

    很难相信以前没有人遇到过这个问题,因为
    ShaderEffect
    已经存在了十年了

    有没有什么聪明的方法可以实现我想要的(使用MSBuild对WPF进行HLSL编译)


    提前谢谢。

    如果您找到“Shazzam Shader Editor v1.4”的可用下载链接,会变得更容易。这是一个免费的WPF辅助工具(无广告等),您可以使用所见即所得的样式编写HLSL,程序将生成*.fx文件和*.cs文件(ShaderEffect的实现,它加载着色器并绑定相关变量)。相信我,这可能是过时的软件,但它是编写图像效果的绝佳场所。@shadow32使用WYSIWYG着色器编辑器并不能直接解决我的问题,但您推荐的软件是一个杰作,它确实帮助了我!遗憾的是,该软件早已被放弃……感谢您分享宝贵的不客气!顺便说一句,你有没有找到一种方法可以在同一个图像元素上应用多种效果,而不用将图像包装在几个边框元素中并对其应用效果?如果API允许链接效果,而不是增加视觉树的深度,从而降低性能,那就太好了。也许你可以您是否可以尝试Shazzam Shader Editor?如果您找到“Shazzam Shader Editor v1.4”的可用下载链接,它会变得更容易。这是一个免费的WPF帮助工具(无广告等),您可以使用WYSIWYG样式编写HLSL,程序会生成*.fx文件和*.cs文件(ShaderEffect的实现,它加载着色器并绑定相关变量)。相信我,这可能是过时的软件,但它是编写图像效果的绝佳场所。@shadow32使用WYSIWYG着色器编辑器并不能直接解决我的问题,但您推荐的软件是一个杰作,它确实帮助了我!遗憾的是,该软件早已被放弃……感谢您分享宝贵的不客气!顺便说一句,你有没有找到一种方法可以在同一个图像元素上应用多种效果,而不用将图像包装在几个边框元素中并对其应用效果?如果API允许链接效果,而不是增加视觉树的深度,从而降低性能,那就太好了。也许你可以没有来自的帮助。你能试试Shazzam着色器编辑器吗?