所以我正在用 C#/.NET 为自己开发一个游戏引擎框架,并且我一直在尝试简化构建着色器文件(渲染引擎使用我想从 GLSL 源生成的 SPIR-V 文件)。我目前的方法是使用导入到 CSPROJ 中的自定义 .targets 文件,该文件定义了一个自定义目标,如下所示:
<Target
Name="Vert"
AfterTargets="Build">
<MakeDir Directories="$(OutputPath)%(VertShader.RelativeDir)"/>
<Exec Command='"$(ENGINE_ROOT)\tools\glslang\windows-x64\glslangValidator.exe" -V %(VertShader.Identity) %(VertShader.OptLevel) -o $(OutputPath)%(VertShader.Identity).spv'></Exec>
</Target>
这背后的一般想法是它需要 VertShader 项目,通过 glslang 运行 .vert 文件,并将输出 .vert.spv 文件吐出到构建输出目录中。这工作得很好,几乎。
问题是,如果我的项目 A 有一堆着色器,然后项目 B 引用了项目 A,我想将项目 A 生成的 .vert.spv 着色器复制到项目 B 的构建输出目录中,但我没有太多的运气来争论目标语法来做我想做的事。
有什么办法可以让我按照我描述的方式工作吗?