2017-02-05 4 views
0

Услышав о Кланге большие вещи, я решил дать ему шанс и установить Clang на мои окна. С установкой он также был интегрирован в мой VisualStudo2015. Все работало нормально, пока я не попытался скомпилировать небольшую программу DirectX11 с clang. У первого Клаанта возникли проблемы с «DirectXMath» -характерами DirectX11. В то время как DirectX рассматривал SIMD-тип __m128 как объединение, clang использовал массив float. Я решил удалить заголовки clang и предоставил компилятору только заголовки microsoft. Он скомпилирован без каких-либо предупреждений или ошибок.
Но когда я запустил программу, я просто увидел черную текстуру с правильным размером и в правильном положении. Перекомпиляция программы с помощью обычного VisualStudio-Compiler разрешена при правильном отображении текстуры, поэтому, я думаю, мой код верен.DirectX11 с Clang показывает черную текстуру (с Visual Studio работает)

Может ли быть какой-либо способ помочь Клану? Я хочу больше работать с Clang под Windows, но я не хочу менять свою идею проекта.

Некоторые сведения (которые, возможно, могли бы помочь):
1.) Я использую лязг-ХЛ со следующими дополнительными командами: -fms-расширения -fms-совместимость -Qunused-аргументы
2.) I» м, используя для Windows 8.1 заголовки
3.) Рисование текстуры производится с DirectXTK

ответ

0

базовый синтаксис SSE встроенных функций определяется Intel, но специфика как типы платформы __m128 реализованы варьируется от компилятора к компилятору , Похоже, проблема в том, что в нескольких местах, где я должен использовать индексирование V.m128_f32[i]; в DirectXMath. Похоже, что новая версия Clang должна работать, если это V[i].

Я подозреваю, что вам нужно будет создать все с символом препроцессора _XM_NO_INTRINSICS_, если Clang не будет строить с DirectXMath. Я сомневаюсь, что заголовки заголовков Visual C++ будут корректно работать с Clang.

Я лично не пробовал работать с Clang, но если есть то, что я могу сделать, чтобы улучшить DirectXMath или DirectXTK использования с Clang, дайте мне знать. Я отправил issue для отслеживания этой конкретной проблемы.

Тем не менее, заголовки Windows SDK не полностью совместимы с Clang и, конечно же, не в версии Windows 8.1 SDK.

+0

Спасибо за ваш ответ. Я уже использую Visual C++ intrinsics. Они компилируются хорошо. Проблема с текстурой. Положение текстуры передается с помощью SSE, и позиция правильная. Но текстура будет черной. Правильный адрес текстуры. – DragonEgg

Смежные вопросы