Wpf 如何在csproj中构建着色器效果(.fx)

Wpf 如何在csproj中构建着色器效果(.fx),wpf,msbuild,directx,csproj,pixel-shader,Wpf,Msbuild,Directx,Csproj,Pixel Shader,我正在尝试在C#类库中构建像素着色器 我已将fx文件添加到项目中。由于找不到任何合适的构建操作,我尝试手动编辑csproj: <FxCompile Include="MyEffect.fx"> <ShaderType>Pixel</ShaderType> </FxCompile> 如何设置我的项目,以便找到已编译的着色器? 所有的教程都是针对C++项目或与自定义工具(如自定义构建任务)进行处理的,但我认为这不是VS201.所需要的。 编辑:

我正在尝试在C#类库中构建像素着色器

我已将fx文件添加到项目中。由于找不到任何合适的构建操作,我尝试手动编辑csproj:

<FxCompile Include="MyEffect.fx">
  <ShaderType>Pixel</ShaderType>
</FxCompile>
如何设置我的项目,以便找到已编译的着色器?

所有的教程都是针对C++项目或与自定义工具(如自定义构建任务)进行处理的,但我认为这不是VS201.

所需要的。 编辑:
VisualStudio只在C++项目中编译.fx文件。在C#项目中,它不起作用。此处提到:

您可以设置后期生成选项以使用fxc编译fx文件:

fxc /O0 /Fc /Zi /T  fx_5_0 /Fo myShader.fxo myShader.fx
但我在开发时在运行时编译所有着色器。 我不确定您使用的是什么C#库,但您可以在SharpDX和SlimDX中执行此操作:

ShaderBytecode.CompileFromFile(effectFile, "fx_5_0", ShaderFlags.None, EffectFlags.None);

添加到cs项目的任何文件都将有一个名为
生成操作
的属性,它应该是
资源
。看起来你编辑它是为了使用compile,这当然行不通。除非您完全了解自己的工作,否则不应直接编辑项目文件。您的代码看起来不错,我认为问题只是因为
构建操作
设置为
编译
,这是错误的。好吧,我已经将其设置为
FxCompile
,而不是
编译
。我注意到在一些cpp项目中出现了
FxCompile
。生成操作
Resource
不起作用,因为必须先将.fx文件编译为.ps文件,然后将其添加到资源中。请注意,资源名称是
MyEffect.ps
而不是
MyEffect.fx
我告诉您将其
构建操作设置为
resource
的是文件
.ps
。顺便说一句,我甚至编写了一个只包含自定义效果的简单库,我确信
.ps
文件应该将
构建操作设置为
资源
。您对csproject文件所做的操作应该回滚(以确保它不会影响下一步的操作)。如果可能的话,尝试再次创建一个新项目。但是我还没有.ps文件。你是说我必须使用fxc.exe手动编译hlsl?是的,事实上我使用了
Shazzam
(支持hlsl编辑器和预览)。那么您希望VS编译HLSL源代码?据我所知,VS 2012无法做到这一点,不确定是否有更新的版本。或者它附带了一些插件来帮助实现这一点。
ShaderBytecode.CompileFromFile(effectFile, "fx_5_0", ShaderFlags.None, EffectFlags.None);