2017-02-05 14 views
0

Clang에 대한 훌륭한 정보를 들으면서 기회를주고 Windows에 Clang을 설치하기로 결정했습니다. 설치시 VisualStudo2015에도 통합되었습니다. clang으로 작은 DirectX11 프로그램을 컴파일하려고 할 때까지 모든 것이 잘 동작했습니다. 처음 Clang은 "DirectXMath"- DirectX11의 헤더에 몇 가지 문제가 있습니다. DirectX가 __m128 SIMD 형식을 유니온으로 처리하는 동안 clang은 float 배열을 사용했습니다. 나는 clang 헤더를 제거하고 컴파일러에만 microsoft 헤더를 가져 가기로했다. 경고 나 오류없이 컴파일되었습니다.
하지만 나는 프로그램을 시작했을 때 정확한 크기와 올바른 위치의 검정 텍스처를 보았습니다. 일반적인 VisualStudio- 컴파일러로 프로그램을 다시 컴파일하면 텍스처를 올바르게 표시 할 수 없으므로 코드가 정확한 것 같습니다.DirectX11과 Clang이 검은 색 텍스처를 표시 함 (Visual Studio 사용)

Clang을 도와 줄 수있는 방법이 있습니까? Windows에서 Clang과 더 많이 일하고 싶지만 프로젝트 아이디어를 바꾸고 싶지 않습니다. (어쩌면 도움이 될)

일부 정보 :
1) 나는 다음과 같은 추가 명령을 연타-CL을 사용하고 있습니다 : -fms 호환성 -fms-확장 -Qunused-인수
2) 나 ' 질감을 그리기 윈도우 8.1 헤더
3)를 사용하여 m은 DirectXTK

답변

0

기본 SSE의 내장 함수 구문은 인텔에 의해 정의하여 수행되지만 __m128가 구현되는 플랫폼 유형에서 컴파일러에 컴파일러 변화하는 방법의 세부 사항 . 문제는 내가 DirectXMath에서 V.m128_f32[i]; 인덱싱을 사용해야하는 곳이라는 것 같습니다. 이것이 V[i] 인 경우 Clang의 최신 버전이 작동해야합니다.

Clang이 DirectXMath로 빌드되지 않으면 전 처리기 기호 _XM_NO_INTRINSICS_으로 모든 것을 빌드해야한다고 생각합니다. Visual C++ 내장 헤더가 Clang과 제대로 작동하는지 의심 스럽습니다.

나는 개인적으로 연타 작업을 시도하지했지만, 일이 있다면 나는 연타로 DirectXMath 또는 DirectXTK 사용을 개선 알려 주시기 위해 할 수 있습니다. 이 특정 문제를 추적하기 위해 issue을 제출했습니다.

즉, Windows SDK 헤더는 완전히 Clang과 호환되지 않으며 Windows 8.1 SDK 버전에서는 그렇지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 이미 Visual C++ 내장 함수를 사용하고 있습니다. 그들은 잘 컴파일됩니다. 문제는 텍스처 때문입니다. 텍스처의 위치가 SSE와 함께 전달되고 위치가 정확합니다. 그러나 텍스처는 검정색으로 렌더링됩니다. 텍스처의 주소도 정확합니다. – DragonEgg