我正在 DirectX (SharpDX) 中编写着色器。问题是,我注意到每次更改着色器(.fx 文件)中的某些内容时,我都需要清理并构建。有什么办法可以避免这样做吗?在我进行一些更改之前,看起来“构建”足以应用更改......例如。如果我要为一条线返回红色。我可以将颜色更改为绿色,构建,我仍然会看到它是红色的。如果我清理+构建,我会看到更改(绿色线)。
我认为这可能与一些缓冲区清洁有关,但我不确定。
非常感谢您的任何想法。
我正在 DirectX (SharpDX) 中编写着色器。问题是,我注意到每次更改着色器(.fx 文件)中的某些内容时,我都需要清理并构建。有什么办法可以避免这样做吗?在我进行一些更改之前,看起来“构建”足以应用更改......例如。如果我要为一条线返回红色。我可以将颜色更改为绿色,构建,我仍然会看到它是红色的。如果我清理+构建,我会看到更改(绿色线)。
我认为这可能与一些缓冲区清洁有关,但我不确定。
非常感谢您的任何想法。
如果我没记错的话,着色器编译器正在出现并将您的着色器编译为 .fxc 字节码。我相信 Visual Studio 不会跟踪对“外部文件”(即不是 C#/C/C++/任何代码文件)的更改,所以当程序运行时,它会抓取已经编译的 .fxc 代码,它没有新的变化。清理它会删除那些预编译的文件,从而触发重新编译。解决此问题的最简单方法是在项目属性中添加自定义构建步骤,以手动在着色器上运行 DirectX 着色器编译器 (fxc.exe)。你会失去很好的属性页的东西(假设你首先使用它们),但是任何时候你编译你的项目,它都会重新编译你的着色器。