2017-12-26 33 views
0

어제부터 DirectX11 프로젝트를 컴파일하는 중 일부 컴파일러 오류로 어려움을 겪었습니다. 렌더링 할 객체를 만들고 정의 할 때까지 모든 것이 잘 작동했습니다. 나는 이것을 위해 쉐이더 (타입 효과)를 추가했다.쉐이더를 컴파일하는 중 오류가 발생했습니다 - DirectX11

컴파일러에서 "fxc.exe"가 코드 1로 종료되었다고 말했습니다. "

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' 

:

Shader Model 5.0 (/5_0) 

그러나이 후

, 난 여전히 몇 가지 오류를 얻을 : 나는 내 HLSL 컴파일러의 쉐이더 모델을 정의, 따라서 DirectX compilation error: error MSB6006: "fxc.exe" exited with code 1

: 는이 문제를 해결하기 위해, 나는이 대답을 따라 마지막 세 가지 오류에 대해서는 이전에 가지고 있었지만이 MSDN 페이지의 5-a 단계를 따라 수정했습니다. https://msdn.microsoft.com/en-us/library/windows/desktop/ee663275(v=vs.85).aspx 이제이 오류가 다시 나타나며 이유를 모르겠습니다. 프로젝트 속성을 다시 확인했지만 오류는 다시 나타납니다.

나는 이것들이 약간의 컴파일러 오류라고 생각하고, 위의 링크의 6 단계를 따라 그것을 고치려고했지만 작동하지 않았다.

나는 Visual Studio 2015를 사용하고 있습니다.

아무에게 도와 줄 수 있습니까? 나는 정말로 답을 찾고 있었지만 그것을 고치려고 노력했지만 아무 것도 지금은 효과가없는 것처럼 보인다. 감사합니다.

+1

관련 코드를 게시하지 않았으므로 코드에서 무엇이 잘못되었는지 알아 내야합니까? – Asesh

답변

1

레거시 DirectX SDK와 Windows 8.1 SDK를 잘못 혼합 한 경우가 대부분입니다. D3D_MIN_PRECISION에는 Windows 8.1 SDK 버전 d3dcommon.h에 정의되어 있지만 이 아니라 기존 DirectX SDK 버전에 인 정의가 없습니다.

include/libs 경로에 먼저 나열된 Windows 8.1 SDK가 있는지 확인하십시오.

올바른 버전을 선택하려면 <d3dx11.h>을 포함하기 전에 명시 적으로 <d3d11.h>을 포함해야합니다.

또한 먼저 <d3dcommon.h>을 명시 적으로 포함 할 수도 있습니다.

프로젝트에서 레거시 DirectX SDK를 사용하지 않는 것이 이상적입니다. Living without D3DXThe Zombie DirectX SDK을 참조하십시오.

물론이 모든 것은 사용자의 C++ 코드에 적용됩니다. d3d11shader.hdxgi1_2.h 헤더는 HLSL 셰이더 코드에 포함될 수 없습니다.

+0

감사합니다! 단지 앞에 포함 시키면 모든 오류가 해결되었습니다! 정말 고맙습니다 ! –

+1

MSDN 지침의 단계 5b : –