2017-12-26 15 views
0

Ich habe seit gestern mit einigen Compiler-Fehlern gekämpft und versucht, ein DirectX11-Projekt zu kompilieren. Alles hat gut funktioniert, bis ich ein Objekt zum Rendern erstellt und definiert habe. Ich habe dafür einen Shader (Type-Effekt) hinzugefügt.Fehler beim Kompilieren des Shaders - DirectX11

Der Compiler sagte mir, dass "" fxc.exe "mit Code 1 beendet". Um dies zu lösen, gefolgt ich diese Antwort: DirectX compilation error: error MSB6006: "fxc.exe" exited with code 1

Daher i mein HLSL-Compiler Shader-Modell wie folgt definiert:

Shader Model 5.0 (/5_0) 

Aber nach diesem, ich habe noch einige Fehler erhalten:

1>c:\program files (x86)\windows kits\8.1\include\um\d3d11shader.h(68): error C3646: 'MinPrecision': unknown override specifier 
1>c:\program files (x86)\windows kits\8.1\include\um\d3d11shader.h(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\program files (x86)\windows kits\8.1\include\um\d3d11shader.h(235): error C3646: 'InterpolationMode': unknown override specifier 
1>c:\program files (x86)\windows kits\8.1\include\um\d3d11shader.h(235): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\program files (x86)\windows kits\8.1\include\shared\dxgi1_2.h(1271): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\program files (x86)\windows kits\8.1\include\shared\dxgi1_2.h(1271): error C2143: syntax error: missing ',' before '*' 
1>c:\program files (x86)\windows kits\8.1\include\shared\dxgi1_2.h(1275): error C2061: syntax error: identifier 'DXGI_RGBA' 

Für die drei letzten Fehler hatte ich sie vorher aber behoben sie nach dem Schritt 5-a dieser MSDN Seite: https://msdn.microsoft.com/en-us/library/windows/desktop/ee663275(v=vs.85).aspx Aber jetzt sind diese Fehler zurück und ich verstehe nicht warum. Ich habe die Projekteigenschaften erneut überprüft, aber die Fehler sind immer noch zurück.

Ich denke, das sind einige Compilerfehler, und ich habe versucht, es zu beheben, indem Sie Schritt 6 des obigen Links folgen, aber es hat nicht funktioniert.

Ich verwende übrigens Visual Studio 2015.

Könnte mir bitte jemand helfen? Ich habe wirklich nach Antworten gesucht und versucht, es zu beheben, aber nichts scheint jetzt zu funktionieren. Danke.

+1

Sie haben keinen relevanten Code veröffentlicht, also wie sollen wir herausfinden, was in Ihrem Code falsch ist? – Asesh

Antwort

1

Vermutlich mischen Sie das alte DirectX SDK und das Windows 8.1 SDK falsch. D3D_MIN_PRECISION fehlt eine Definition, die in der Windows 8.1 SDK-Version von d3dcommon.h, aber nicht in der älteren DirectX SDK-Version definiert ist.

Stellen Sie sicher, dass in Ihren include/libs-Pfaden das Windows 8.1 SDK zuerst aufgeführt wird.

Stellen Sie sicher, dass Sie explizit <d3d11.h> einschließen, bevor Sie <d3dx11.h> einschließen, um sicherzustellen, dass Sie die richtige Version auswählen.

Sie möchten auch zuerst explizit <d3dcommon.h> einschließen.

Idealerweise würden Sie das ältere DirectX SDK in Ihrem Projekt nicht verwenden. Siehe Living without D3DX und The Zombie DirectX SDK.

Natürlich gilt das alles für Ihren C++ - Code. Die Header d3d11shader.h und dxgi1_2.h können nicht in den HLSL-Shader-Code aufgenommen werden.

+0

Danke! Nur indem vor eingeschlossen wurde, löste es alle diese Fehler! Ich danke dir sehr ! –

+1

Schritt 5b der MSDN-Anweisungen :) –

Verwandte Themen