【问题标题】:Disable built-in HLSL Compiler in Visual Studio 2017?在 Visual Studio 2017 中禁用内置 HLSL 编译器?
【发布时间】:2017-10-10 16:07:47
【问题描述】:

我正在尝试在我的 c++ 项目中使用 Direct2D 中的自定义效果,该项目包含在 c#/XAML 解决方案中。我一直在尝试从Windows-universal-samples git repoD2DCustomEffects 解决方案中调整CustomPixelShader 项目。

我的问题(我认为)是他们正在项目解决方案中配置自定义构建步骤以获取 fxc 来编译着色器。当我尝试模仿他们的配置时,我注意到在我的项目属性页面中我有一个附加属性 - HLSL 编译器 - 这在 CustomPixelShader 示例项目中不存在(见图)。

当我尝试构建项目而不尝试配置 HLSL 编译器时,出现错误

Error   X1507   failed to open source file: 'd2d1effecthelpers.hlsli'

这是一个在自定义效果示例中明确指出对着色器编译很重要的文件。 d2d1effecthelpers.hlsli 的路径包含在自定义构建步骤配置中,我已检查该文件是否存在。但是,如果我将 d2d1effecthelpers.hlsli 的路径添加到 HLSL 编译器配置中的 Additional include 目录,则该错误消息会消失,但我会遇到其他问题。我将其解释为 HLSL 编译器尝试编译着色器,尽管我确实想使用自定义构建步骤来代替。

我的问题是:是否可以以任何方式禁用 Visual Studio HLSL 编译器?我注意到如果我从项目中排除任何着色器文件,HLSL 编译器将从项目属性页面中消失,但是如何手动执行呢?

或者,是否有任何关于 Visual Studio 内置 HLSL 编译器的文档?我还真没找到。我已经尝试过,但未能让 HLSL 编译器按照与示例中的自定义构建步骤相同的规则进行构建。

我正在使用 Visual Studio Community 2017 v 15.3.5。

【问题讨论】:

    标签: visual-studio visual-studio-2017 direct2d


    【解决方案1】:

    首先,Visual Studio HLSL 编译器实际上是 fxc。如果您想在自定义构建步骤中手动编译着色器,则可以禁用 hlsl 编译,执行以下步骤:在解决方案资源管理器中右键单击 .hlsl 文件;在上下文菜单中选择“属性”;将配置属性 -> 常规 -> 项目类型条目从 HLSL compiler 更改为 TextDoes not participate in build;

    【讨论】:

    • 感谢您的回答!我从另一个论坛得到了完全相同的解决方案,我只是添加了该答案的摘要,但你打败了我。
    【解决方案2】:

    我在另一个论坛(link to answer)上得到了答案。

    总结:在 Visual Studio 的解决方案资源管理器中右键单击 .hlsl 文件。这将导致显示该文件的属性。在配置属性 -> 常规下,您可以将项目类型更改为“HLSL 编译器”以外的内容。将其更改为“文本”对我有用,其他论坛的答案中建议“不参与构建”。如果这不起作用,将 Exclude 的值从 build 更改为“No”可能会起作用。对我来说,只需更改 .hlsl 文件的 Item 类型就足够了。

    这应该会导致 HLSL 编译器从项目属性页面中消失(参见问题中的图片),并且 HLSL 编译器不会尝试编译 .hlsl 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多