2017-02-05 44 views
0

聽到關於Clang的偉大的事情,我決定給它一個機會,並在我的窗戶上安裝Clang。隨着安裝它也集成到我的VisualStudo2015。一切正常,直到我試圖用clang編譯一個小型的DirectX11程序。 First Clang在「DirectXMath」 - DirectX11的標題中遇到了一些問題。雖然DirectX將__m128 SIMD類型視爲一個聯合,但clang使用了一個浮點數組。我決定刪除clang頭文件,並且只編譯微軟頭文件。它編譯時沒有任何警告或錯誤。
但是當我啓動程序時,我只看到了正確尺寸和正確位置的黑色紋理。用正常的VisualStudio-Compiler重新編譯程序可以正確顯示紋理,所以我猜我的代碼是正確的。DirectX11與Clang顯示黑色紋理(使用Visual Studio工作)

有沒有什麼辦法可以幫助Clang?我想在Windows下與Clang一起工作,但我不想改變我的項目想法。

一些信息(這也許可以幫助):
1)我使用鐺-CL具有以下附加命令:-fms兼容-fms的擴展-Qunused論點
2)我」使用Windows 8.1頭
3)拉絲質感M與DirectXTK

回答

0

基本上證所內部函數的語法是由英特爾定義完成,但平臺類型__m128實現是如何變化的,從編譯器來編譯細節。這聽起來像問題是我必須在DirectXMath中使用V.m128_f32[i];索引的少數幾個地方。它看起來像Clang的新版本應該工作,如果這是V[i]

我懷疑如果Clang不會使用DirectXMath構建,那麼您將不得不使用預處理器符號_XM_NO_INTRINSICS_來構建一切。我懷疑Visual C++內部函數頭文件可以與Clang正常工作。

我沒有親自嘗試與Clang的工作,但如果有事情,我可以做,以改善DirectXMathDirectXTK使用鏗鏘,讓我知道。我提交了一個issue來跟蹤這個特定的問題。

也就是說,Windows SDK頭部並不完全符合鏗鏘聲兼容,並且肯定不在Windows 8.1 SDK版本中。

+0

感謝您的回答。我已經在使用Visual C++內部函數。他們編譯得很好。問題與紋理有關。 紋理的位置與SSE一起傳遞,位置正確。但紋理會變成黑色。紋理的地址也是正確的。 – DragonEgg