2016-05-18 30 views
5

Ich möchte eine HLSL-Shader-Datei in meinem C# -Projekt in Visual Studio 2015 kompilieren. Mit einem C++ - Projekt bekomme ich sofort die richtigen Eigenschaften, wenn ich eine HLSL-Datei wie die hinzufügen Bild unten:Wie kompiliert HLSL Shader-Datei in Visual Studio C# -Projekt

HLSL build properties in C++

jedoch, wenn ich will dieses Projekt in meinem C# tun (mit SharpDX) ich habe keine solche Optionen erhalten und somit nicht auf eine CSO-Datei für mein Projekt kompilieren.

Kennt jemand eine Lösung dafür?

Antwort

5

Es gibt jetzt ein NuGet Paket, Microsoft.HLSL.CSharpVB, die Unterstützung für HLSL-Shader-Eigenschaften zu C# und VB-Projekten ergänzt:

Dieses Paket installiert MSBuild Hilfsprojekte für HLSL Kompilierung in C# und VB.

Laden Sie Ihr Projekt neu oder starten Sie Visual Studio neu, damit der neue Shader Build Actions im Eigenschaftenfenster angezeigt wird.

3

Sie können dies direkt nicht in einem C# -Projekt, als Visual StudioHLSL Kompilation eingebaute Integration nur ist und von einem Projekt C++ arbeiten.

Sie könnten jedoch ein leeres C++ - Projekt in dieselbe Lösung einfügen und dann Ihre HLSL-Dateien hinzufügen und konfigurieren und dann generierte cso-Dateien aus Ihrem C# -Projekt als Inhalt referenzieren (und eine Projektabhängigkeit von C# hinzufügen -> C++ - Projekt) ... Bei einigen MSBuild-Tricks könnten Sie den generierten Inhalt auch automatisch in Ihr C# -Projekt kopieren.

+1

Dies ist in der Tat eine schöne Problemumgehung. Setzen Sie den Namen der Ausgabedatei der HLSL-Dateien auf $ (SolutionDir) \% (Dateiname) .cso. Und dann fügte man die cso-Datei als eine Inhaltsdatei zu dem Hauptprojekt hinzu, mit dem "Kopieren immer" oder "Kopieren, wenn neuer". –