2014-01-16 2 views
2

Преамбула:
Я делаю проект с VS 2013, и я попытался #include <d3dx11.h> и не было найдено. Я сделал немного поиска и нашел эту цитатуd3dx11.h в Windows 8 SDK

D3DX не считается каноническим API для использования Direct3D в Windows 8 и, следовательно, не входит в соответствующий SDK для Windows. Изучите альтернативные решения для работы с Direct3D API.

из this page

Я тогда сделал еще некоторый поиск и нашел this SO question, и я попробовал ответ, но это в конечном итоге просто разбивая все включает. Так что да, я сделал некоторые поиски

Вопрос:
Как вы используете d3dx11 в VS 2013?

+0

Я думаю, что он был заменен на d3dmath, поэтому вам, вероятно, придется переключиться на это. Вид раздражает, если вы привыкли к старому способу делать вещи, тем более, что ни один сторонний учебник D3D11 не был обновлен для решения проблемы (часть причины, по которой я отключен от D3D в пользу OpenGL/CL). – NmdMystery

+0

Ahh, хорошо. Это воняет. –

+0

Расскажите мне об этом:/Я даже не уверен, что улучшилось по сравнению с d3dx. – NmdMystery

ответ

1
  1. Скачать и установить DirectX SDK

  2. В Visual Studio клик по проекту> Свойства> VC++ Directories:

  3. Include Directories: нажмите немного стрелка вниз><Edit...>>...> ориентироваться в C: \ Program Files (x86) \ Microsoft DirectX SDK Июнь 2010 \ Include> Выбрать папку

  4. Библиотечные каталоги> такие же, как указано выше, но s Избранный ... \ Lib \ x86>OK

  5. В коде:

#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dx11.lib")
#pragma comment(lib, "dxgi.lib")

#include <d3d11.h>
#include <D3DX11.h>

+0

С VS 2012/2013 вы используете SDK Windows 8.x, поэтому вам нужно использовать порядок ввода/lib, в который входит DirectX SDK * после * SDK Windows 8.x. Подробные инструкции приведены на [MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275%28v=vs.85%29.aspx) в нижней части страницы, на которую вы ссылались. И наоборот, если вы используете набор инструментов платформы Windows 2012/2013 «Windows XP», вы фактически используете SDK Windows 7.1A, поэтому сначала нужно включить DirectX SDK include/libs. Смотрите блог [this] (http://blogs.msdn.com/b/chuckw/archive/2012/11/26/visual-studio-2012-update-1.aspx). –

+0

[Эта страница в MSDN] (https://msdn.microsoft.com/en-us/library/bb531344.aspx), «Нарушение изменений в Visual C++», гласит следующее: «Чтобы избежать ошибок во время выполнения, которые трудно обнаружить и диагностировать, мы рекомендуем вам никогда не статически ссылаться на двоичные файлы, которые были скомпилированы с использованием разных версий компилятора. Кроме того, при обновлении проекта EXE или DLL обязательно обновите библиотеки, на которые он ссылается ». Нужно ли беспокоиться о ссылке на эти .lib-файлы из VS2013, поскольку они были созданы с использованием более раннего компилятора? –

+0

Абсолютно это относится к любым библиотекам. – jaho

0

Вы можете использовать наследие режим как j aho предложил или адаптировать новый способ «Microsoft».

Следует иметь в виду, что технологии замены для текущего использования D3DX11 включают DirectXTex и DirectXTK. D3DXMath заменяется DirectXMath.

DirectXTex выглядит как автономная библиотека загрузки текстур, и на самом деле она по-прежнему активно поддерживается Microsoft. Он содержит все «LoadFromDDSFile()» - подобные функции.

+0

DirectXTex - отличная библиотека для написания инструментов обработки контента, но это слишком много для загрузки файла DDS, который вы контролируете. [DDSTextureLoader/WICTextureLoader] (http://blogs.msdn.com/b/chuckw/archive/2012/05/04/direct3d-11-textures-and-block-compression.aspx) предназначены для дешевой загрузки ресурсов без всей библиотеки DirectXTex. –

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