繁体   English   中英

带有Clang的DirectX11显示黑色纹理(在Visual Studio中有效)

[英]DirectX11 with Clang shows black texture (with Visual Studio it works)

听到有关Clang的好消息,我决定给它一个机会,并在Windows上安装了Clang。 安装后,它也集成到了我的VisualStudo2015中。 一切正常,直到我尝试使用clang编译小型DirectX11程序。 First Clang的DirectX11的“ DirectXMath”标头出现了一些问题。 DirectX将__m128 SIMD类型视为联合时,clang使用了float数组。 我决定删除clang标头,并只给编译器提供Microsoft标头。 它编译时没有任何警告或错误。
但是,当我开始编程时,我只是看到了正确大小和正确位置的黑色纹理。 使用正常的VisualStudio-Compiler重新编译程序,可以正确显示纹理,因此我猜我的代码是正确的。

有什么办法可以帮助Clang吗? 我想在Windows下使用Clang进行更多的工作,但是我不想改变我的项目构想。

一些信息(可能会有所帮助):
1.)我将clang-cl与以下其他命令配合使用:-fms-compatibility -fms-extensions -Qunused-arguments
2.)我正在使用Windows 8.1标头
3.)绘制纹理是使用DirectXTK完成的

基本的SSE内部函数语法由Intel定义,但是如何实现平台类型__m128的具体细节因编译器而异。 听起来问题出在我必须使用V.m128_f32[i];地方很少V.m128_f32[i]; 在DirectXMath中建立索引。 如果这是V[i] ,则似乎应该可以使用较新版本的Clang。

我怀疑如果Clang无法使用DirectXMath构建,则_XM_NO_INTRINSICS_定义的预处理器符号_XM_NO_INTRINSICS_构建所有内容。 我怀疑Visual C ++内部标头是否可以与Clang一起正常使用。

我个人没有尝试过使用Clang,但是如果我可以做些事情来改善Clang的DirectXMathDirectXTK使用率,请告诉我。 我提出了一个问题来跟踪此特定问题。

也就是说,Windows SDK标头不完全兼容Clang,当然也不在Windows 8.1 SDK版本中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM