2017-10-09 79 views
0

Direct2Dでカスタムエフェクトを使用しようとしていますが、これはc#/ XAMLソリューションに含まれているC++プロジェクトで動作します。私はのD2DCustomEffectsソリューションからCustomPixelShaderプロジェクトを適用しようとしています。Visual Studio 2017で組み込みHLSLコンパイラを無効にしますか?

私の問題は、fxcがシェーダをコンパイルするようにプロジェクトのカスタムビルドステップを構成していることです。私の設定を模倣しようとしたところ、プロジェクトのプロパティページに、HLSLコンパイラという追加のプロパティがあり、CustomPixelShaderサンプルプロジェクトには存在しないことがわかりました。

enter image description here

私は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を使用しています。

答えて

0

最初に、Visual Studio HLSLコンパイラは実際にはfxcです。カスタムビルドステップの一部として手動でシェーダをコンパイルする場合は、次の手順を実行してhlslコンパイルを無効にすることができます。ソリューションエクスプローラで.hlslファイルを右クリックし、コンテキストメニューで[プロパティ]を選択します。構成プロパティ - >一般 - >アイテムタイプのエントリをHLSL compilerからTextまたはDoes not participate in buildに変更します。

+0

ありがとうございました!私は別のフォーラムからまったく同じ解決策を得ました、私はその答えの要約を追加しましたが、あなたは私にそれを打ちました。 –

0

私は別のフォーラム(link to answer)で答えを得ました。

要約:Visual Studioのソリューションエクスプローラで.hlslファイルを右クリックします。その結果、そのファイルのプロパティが表示されます。 「構成プロパティー」 - >「一般」で、「HLSLコンパイラー」以外の項目タイプに変更することができます。それを「テキスト」に変更すると、もう1つのフォーラムの回答で「ビルドに参加しません」というメッセージが表示されました。それがトリックではない場合、除外の値をビルドから「いいえ」に変更すると動作します。私の場合は、.hlslファイルのアイテムタイプを変更するだけで十分でした。

これは、HLSLコンパイラがプロジェクトのプロパティページ(質問の画像を参照)から消失し、HLSLコンパイラが.hlslファイルをコンパイルしようとしません。