我正在尝试在 C# 类库中构建像素着色器。
我已将 fx 文件添加到项目中。由于找不到任何合适的构建操作,我尝试手动编辑 csproj:
<FxCompile Include="MyEffect.fx">
<ShaderType>Pixel</ShaderType>
</FxCompile>
但是当我尝试定位 ps 文件时,我得到了 System.IO.IOException: Cannot locate resource 'MyEffect.ps'
这是抛出错误的代码:
public class MyEffect : ShaderEffect
{
public MyEffect(){
this.PixesShader = new Uri("pack://application:,,,/WpfControlLibrary1;component/MyEffect.ps");
}
}
如何设置我的项目以便找到已编译的着色器?
我找到的所有教程都是针对 C++ 项目或涉及自定义构建任务等旧工具的,但我认为自 VS2012 以来就不再需要了。
编辑: Visual Studio 仅在 C++ 项目中编译 .fx 文件。在 C# 项目中它不起作用。这里提到:http://blogs.msdn.com/b/chuckw/archive/2012/05/07/hlsl-fxc-and-d3dcompile.aspx
最佳答案
您可以设置一个 Postbuild 选项来使用 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);
关于wpf - 如何在 csproj 中构建着色器效果 (.fx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023231/