2017-10-09 106 views
0

我想在我的c + +項目中的Direct2D中獲得自定義效果,該項目包含在c#/ XAML解決方案中。我一直在嘗試改編Windows-universal-samples git repoD2DCustomEffects解決方案中的CustomPixelShader項目。在Visual Studio 2017中禁用內置的HLSL編譯器?

我的問題(我認爲)是他們正在項目解決方案中配置一個自定義生成步驟,以獲得fxc編譯着色器。當我嘗試模仿他們的配置時,我注意到在我的項目屬性頁面中,我有一個額外的屬性 - HLSL編譯器 - 它不存在於CustomPixelShader示例項目中(請參閱圖像)。

enter image description here

當我嘗試建立項目,而不嘗試配置HLSL編譯器,我得到的錯誤

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

這是在自定義效果例子清楚地表明,作爲重要文件着色器編譯。 d2d1effecthelpers.hlsli的路徑包含在Custom構建步驟配置中,並且我已檢查該文件在那裏。但是,如果將d2d1effecthelpers.hlsli的路徑添加到HLSL編譯器配置中的其他包含目錄中,該錯誤消息將消失,但我會遇到其他問題。我正在解釋這個,就好像HLSL編譯器試圖編譯着色器一樣,即使我真的想用Custom構建步驟來完成這個任務。

我的問題是:是否有可能以任何方式禁用Visual Studio HLSL編譯器?我注意到,如果我從項目中排除任何着色器文件,HLSL編譯器會從項目屬性頁面中消失,但是如何手動執行該操作?

另外,是否有Visual Studio內置HLSL編譯器的任何文檔在任何地方?我還沒有真正找到。我已經嘗試過,但是未能按照與示例中的「自定義」構建步驟相同的規則來構建HLSL編譯器。

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

回答

0

首先,Visual Studio HLSL編譯器實際上是fxc。如果您希望手動編譯着色器作爲「自定義」構建步驟的一部分,則可以禁用hlsl編譯,執行以下步驟:右鍵單擊解決方案資源管理器中的.hlsl文件;在上下文菜單中選擇「屬性」;從HLSL compilerTextDoes not participate in build更改配置屬性 - >常規 - >項目類型條目;

+0

謝謝你的回答!我從另一個論壇得到了完全相同的解決方案,我剛剛添加了該答案的摘要,但您已經打敗了我。 –

0

我在另一個論壇(link to answer)得到了答案。

摘要:右鍵單擊Visual Studio中解決方案資源管理器中的.hlsl文件。這將導致顯示該文件的屬性。在配置屬性 - >常規下,您可以將項目類型更改爲「HLSL編譯器」以外的項目。將其改爲「文本」爲我工作,「不參與構建」是在其他論壇的答案中提出的。如果這樣做沒有辦法,將修改從排除內容到「否」的值可能會起作用。對我而言,只需更改.hlsl文件的Item類型就足夠了。

這應該導致HLSL編譯器從項目屬性頁中消失(請參閱問題中的圖像),並且HLSL編譯器不會嘗試編譯.hlsl文件。

相關問題