Как подключить DirectX SDK к Visual Studio 2019
Мне только что сказали, что SDK, который я использовал (июнь 2010 г.), больше не будет использоваться и что мне нужно использовать тот новый, который они включили в Win10. Ну и где?
Я пытаюсь запустить демонстрационное графическое решение, но не могу вызывать функции D3D11 из-за ошибок компоновщика, что для меня означает, что мне нужно включать библиотеки и тому подобное.
Если кто-нибудь может помочь мне разобраться в этом, чтобы я мог сдвинуться с мертвой точки, я буду в порядке.
@Чарли, может быть. но все рабочие места, на которые я смотрел, требуют опыта DirectX. Я использовал его в школе, но, как я уже сказал, это был старый SDK. Я знаю, что OpenGL полезно знать, но я просто очень хочу использовать DirectX
Однако это не отвечает тому, что мне нужно. Я не возражаю, если я использую Dx12 или 11, но я не могу нигде найти информацию о том, где находятся какие-либо библиотеки и включения, чтобы я мог действительно кодировать и вызывать функции.
Отдельного SDK больше нет, он был интегрирован в Windows SDK некоторое время назад. Вы можете получить справку об ошибках компоновщика, только если опубликуете сообщение об ошибке компоновщика.
1 Ответ 1
Страница MSDN Где находится DirectX SDK? предлагает вам использовать Windows SDK, в частности, Windows 8.0 SDK, Windows 8.1 SDK или Windows 10 SDK для разработки DirectX (предполагается, что это Direct3D 11 или Direct2D/DirectWrite). Для Direct3D 12 требуется Windows 10 SDK.
Если вы используете Visual Studio 2013, Visual Studio 2015 или Visual Studio 2017 RC, у вас уже есть пакет SDK для Windows 8.1 и, при необходимости, пакет SDK для Windows 10.
Важной деталью является то, что библиотека D3DX (D3DX9, D3DX10 и D3DX11) устарела и доступна только в устаревшем DirectX SDK. Это означает, что D3DX11 не является частью Windows SDK, и вам не следует его использовать.
Для HLSL вы используете D3DCompile напрямую или FXC, поставляемый с Windows SDK. Для математики вы используете DirectXMath, который входит в состав Windows SDK. Если вы используете устаревшие эффекты 11, вы можете использовать версию с GitHub. Я рекомендую вам также ознакомиться с набором инструментов DirectX для DirectX 11 и его учебными пособиями. Полный список замен для D3DX см. в разделе Жизнь без D3DX.
Если вы действительно хотите продолжать использовать устаревшие компоненты DirectX SDK с Visual Studio 2012 или более поздней версии, вы можете это сделать, но вам следует обратить внимание на подробности в нижней части страницы MSDN выше. Примечательно, что при добавлении устаревшего SDK DirectX в проект необходимо изменить порядок путей include/lib.
Для полного каталога того, где оказались различные части старого DirectX SDK, см. DirectX SDK определенного возраста, Каталог инструментов DirectX SDK, Каталог образцов DirectX SDK, а также Жизнь без D3DX статью выше.
Устройство отладки Direct3D 11 для Windows 10 не устанавливается никаким Windows SDK или устаревшим DirectX SDK. Это дополнительная функция Windows. См. раздел «Приемы отладки слоя Direct3D SDK».
Фактическая «среда выполнения DirectX» является частью операционной системы, начиная с пакета обновления 2 для Windows XP. и развертывает только некоторые необязательные параллельные вещи. Это вообще не требуется, если вы используете Windows SDK. См. Не очень прямая установка.
Visual Studio 2019 RTM (также известная как 16.0) теперь доступна для загрузки, включая обновленную версию Community. Также доступны пакеты VS 2019 RTM Redistribution (x86, x64), а также средства удаленной отладки (x86, x64). Дополнительные сведения см. в блоге группы разработчиков Visual Studio.
Windows SDK: VS 2019 RTM по умолчанию устанавливает Windows 10 October 2018 Update SDK (17763). В качестве дополнительных компонентов можно выбрать старые Windows SDK.
IDE: прочтите этот пост, чтобы узнать о некоторых незначительных улучшениях производительности IDE.
Диалоговое окно «Новый проект». Обратите внимание, что интерфейс запуска и «диалоговое окно нового проекта» значительно изменился в VS 2019. См. эту запись в блоге.
VS 2019 включает новую версию компилятора C/C++ (19.20.27508). Набор инструментов имеет некоторые важные улучшения производительности, времени компиляции и времени компоновки, специально обусловленные игровыми сценариями. Вот список оптимизаций из более ранних превью VS 2019. Чтобы узнать об обновлениях соответствия C++17/C++20, см. этот пост.
Среда выполнения C/C++ (14.20.25708) двоично совместима с VS 2015 с обновлением 3 и VS 2017, что означает, что вы можете безопасно связывать код, созданный с помощью VS 2015 с обновлением 3 или VS 2017, с VS 2019. Подробнее см. в этом сообщении. .
Библиотеки времени выполнения VS 2017 C/C++ включали vcruntime140.dll, msvcp140.dll, msvcp140_1.dll, msvcp140_2.dll, concrt140.dll и vccorlib140.dll. VS 2019 добавляет vcruntime140_1.dll. Для использования OpenMP также требуется vcomp140.dll .
VS 2019 может быть предназначен для Windows 10, Windows 8.1, Windows 7 с пакетом обновления 1 и Windows Vista с пакетом обновления 2. Обратите внимание, что Visual C++ 2019 REDIST не поддерживает Windows 8.0, Windows 7 RTM, Windows Vista RTM, Windows Vista с пакетом обновления 1, Windows XP RTM, Windows XP с пакетом обновления 1 или Windows XP с пакетом обновления 2, поскольку все эти платформы находятся за пределами жизненного цикла поддержки. См. Системные требования для семейства продуктов Visual Studio 2019
OpenMP: Подробнее об экспериментальной поддержке OpenMP 4 SIMD в VS 2019 см. в этом сообщении.
C++20 Параметр /std:c++latest включает поддержку черновых функций C++20, включая частичную поддержку оператора (например, оператора «космического корабля»). Также доступна экспериментальная поддержка модулей.
Обратите внимание, что /std:c++latest теперь несовместим с /clr и /ZW (C++/CX).
Анализ кода C++. См. этот и этот посты, чтобы узнать о последних работах по анализу кода C++ ( /analyze ). Существует также экспериментальная функция анализа в редакторе, которую вы можете попробовать, и некоторые дополнительные функции C++ Core Checker.
Windows XP: сборка для Windows XP с использованием новейшего набора инструментов не поддерживается. Инструменты Поддержка C++ Windows XP для VS 2017 (v141) доступны как отдельный необязательный компонент в установщике VS 2019. При сборке с использованием набора инструментов платформы v141_xp для целевой поддержки Windows XP с пакетом обновления 3 помните, что для этого используется пакет SDK для Windows 7.1A. Старый SDK будет генерировать некоторые предупреждения в системных заголовках с новым набором инструментов, которые необходимо подавлять извне. Дополнительные сведения о разработке DirectX см. в VS 2012 Update 1.
Xbox One XDK: Xbox One XDK не поддерживает набор инструментов VS 2019. Microsoft GDK поддерживает VS 2017 и VS 2019.
GitHub: шаблоны игр Direct3D были обновлены для поддержки VS 2019, а Direct3DUWPGame.vsix теперь поддерживает VS 2015, VS 2017 и VS 2019. Я также добавил проекты VS 2019 в DirectX Tool Kit для DX11/DX12, DirectXTex, DirectXMesh, UVAtlas, DXUT и Effects11 в выпусках от апреля 2019 г.
Известная проблема: существует известная проблема для VS 2019 RTM/обновление 1/обновление 2 при использовании моих шаблонов проектов игр Direct3D на GitHub. Если у вас также установлен VS 2017, он работает. В противном случае вам нужно отредактировать файл devenv.exe.config . Подробнее см. здесь. Эта проблема исправлена в обновлении 3.
Известная проблема: существует известная проблема с DirectXMath, из-за которой тесты IsNan могут завершиться ошибкой при сборке с /fp:fast из-за новых оптимизаций. Это исправлено при использовании DirectXMath 3.14 в сочетании с обновлением 3.
Урок 1. Настройка DirectX 11 с помощью Visual Studio
Второй инструмент, который вам понадобится, — Windows 10 SDK. Windows 10 SDK содержит все заголовки DirectX 11, библиотеки, библиотеки DLL и т. д., которые вам понадобятся для написания приложений DirectX 11. Если вы установили Visual Studio 2015, пакет SDK уже был установлен вместе с ним. В противном случае вы можете загрузить Windows Standalone SDK для Windows 10 с веб-сайта Windows Dev Center (msdn). После загрузки и установки SDK у вас будут файлы, необходимые для компиляции программ DirectX 11. Вся документация по Windows 10 SDK также находится на веб-сайте Windows Dev Center. Там вы найдете Руководство по программированию Direct3D 11, в котором есть вся документация по DirectX 11, а также некоторые примеры кода.
После установки IDE и SDK вы можете настроить IDE для работы с Windows 10 SDK, чтобы вы могли писать приложения DirectX 11. Обратите внимание, что перед установкой Windows 10 SDK необходимо установить некоторые IDE.
Настройка Visual Studio 2015
В Visual Studio 2015 я использовал следующие шаги:
Сначала вам нужно создать пустой проект Win32, поэтому выберите «Файл» -> «Создать» -> «Проект». В меню «Новый проект» выберите Win32 в разделе «Шаблоны» -> Visual C++ -> Win32. Затем выберите проект Win32 из вариантов. Дайте проекту имя (я назвал свой Engine) и местоположение, а затем нажмите «ОК». Нажмите «Далее», и вам будет предоставлено другое меню. В разделе «Дополнительные параметры» установите флажок «Пустой проект» и снимите флажок «Проверки жизненного цикла разработки безопасности (SDL)». Нажмите «Готово», и теперь у вас должна быть базовая пустая установка проекта Win32.
Затем на верхней панели вы увидите значение «x86» в раскрывающемся списке «Платформы решений», выберите его и вместо этого выберите «x64». Это установит для вашего проекта 64-битную версию вместо 32-битной по умолчанию.
Наша среда разработки DirectX 11 теперь должна быть настроена и готова к написанию приложений DirectX 11.
1. Кратко ознакомьтесь с Руководством по программированию DirectX 11 на веб-сайте Центра разработки для Windows (msdn).
Но как мне внедрить DirectX SDK в компилятор, чтобы я мог просто включать любые файлы DirectX, как если бы это были стандартные файлы Windows. Например, следующий — заголовок DirectX
Если вы установили SDK после Visual Studio, он *должен* уже быть настроен.
Вам нужно только:
Если это по-прежнему не работает, вы должны добавить пути включения и библиотеки для каждого проекта (или, если эта функция все еще доступна, добавить их один раз и сохранить их на всю жизнь в так называемом «Листе свойств», но Я не уверен насчет vs12)
Но, как видно из ошибки, которую я прокомментировал, это не работает.
Хм, тогда вам придется настроить каталоги вручную.
Если у вас есть листы свойств в VS12, вам удобно ими пользоваться, это будет тот же процесс, но в другом окне.
В основном вы должны либо в свойствах проекта, либо в глобальных листах свойств добавить записи Include, Lib и Bin для DirectX SDK.
Данный «D3DSDKFolder» является вашей базовой папкой D3D SDK, здесь в C:\Program Files\Microsoft DirectX SDK (версия),
Include = D3DSDKFolder\Include
Lib = D3DSDKFolder\Lib\x64 для 64-разрядной версии, D3DSDKFolder\Lib\x86 для 32-разрядной версии
Bin = D3DSDKFolder\Bin (не обязательно)
Как вы можете видеть, это не сильно отличается от других библиотек, вы просто настраиваете каталоги include и lib, и все готово.
Я не уверен, почему вы также добавили папку Bin, но я также не уверен, почему вы не поместили свою папку Bin.
Я могу сказать, что в VS10, возможно, процедура аналогична:
Шаги:
1. Откройте проект
2. Вид->Менеджер свойств
3. У вас должно получиться древовидное представление, которое выглядит следующим образом:
Заданные вами свойства будут свойствами по умолчанию для всех ваших проектов в конфигурации отладки.
Затем сделайте то же самое в разделе «Выпуск | Win32», чтобы применить изменения к конфигурации выпуска.
Это должен быть ваш экран:
Теперь я выделил некоторые моменты.
Это итальянская версия, но вы сами сможете узнать названия.
Когда вы нажимаете на ПРАВЫЙ столбец (выделено красным), открывается раскрывающийся список параметров, нажав на кнопку (выделено зеленым цветом).
Теперь вы можете добавлять каждую строку для каждой записи, которую хотите добавить, с помощью кнопки «Новая строка» (также CTRL+INS).
Очевидно, что это для VS10.
Все работает! Большое спасибо!!
Подождите, теперь у меня возникают проблемы с «неразрешенными внешними элементами» при использовании таких функций в Direct3D, как D3DXMatrixLookAtLH(. ) и D3DXMatrixRotationY(. ) .
На странице свойств Microsoft.Cpp.Win32.user есть параметры «Исполняемые каталоги», «Включить каталоги», «Справочные каталоги», «Каталоги библиотек», «Каталоги библиотек WinRT», «Исходные каталоги» и «Исключить каталоги».
Я добавил в каталоги Include и Library. Что-то, что мне не хватает здесь, что нужно?
Ну, вы не связываете свой проект с D3Dx9.lib
( )
Ой, подождите. Мне нужно?
Та же ссылка, которую вы разместили чуть выше, говорит, что D3DXMatrixRotationY(. ); имеет требования d3dx9math.h и d3dx9.lib
Нет, он включается из d3dx9.h. И файл правильно включен, так как невключение дает неразрешенный внешний идентификатор, а невключение дает неопределенный/необъявленный идентификатор.
Это очень странно.
Если вы компилируете для 32-разрядной версии, уверены ли вы, что настроили 32-разрядный каталог lib DirectX SDK?
Потому что эта ошибка иногда возникает при компиляции 32-битного исполняемого файла с 64-битной библиотекой.
Знаете ли вы, как посмотреть макросы компоновщика в VS12? Мне просто интересно, если по какой-то причине мой компилятор работает в 32-битном режиме, поэтому ему нужна 32-битная библиотека, а не 64-битная библиотека, которую я ему дал.
Я говорю это, потому что я видел много функций, используемых в качестве макросов для ссылки на «рекомендуемую» функцию, поэтому макрос меняет то, что вы на самом деле используете, в зависимости от других определений.
По умолчанию все проекты компилируются для 32-разрядных машин.
Чтобы скомпилировать для 64-разрядной версии (после этого ваш исполняемый файл НЕ будет подходить для 32-разрядных систем!) перейдите в настройки проекта, Linker->Advanced, Destination Computer и измените «MachineX86» на «MachineX64».
(Это переведено и взято из vs10, как всегда)
Он не использует макросы.
Правильно, спасибо!
И если я не нашел это после небольшого поиска:
Я очень надеюсь, что изменение моих настроек на x64 сработает, но в противном случае я верю, что если я вместо этого свяжусь с библиотекой x86, то мое приложение будет собрано (к сожалению, в 32-разрядной версии, ну что ж, могло быть и хуже).
Читайте также:
- Как удалить прошивку с xbox 360
- Как полностью удалить электронную почту с компьютера
- Запрет ввода повторяющихся значений в excel
- Программа для создания локальной сети через wifi
- Как удалить ldplayer с компьютера
Ресурсы для создания игры C++ с помощью DirectX
Для создания лучших игр для рабочего стола используйте Visual C++ вместе с DirectX.
Ресурсы
Visual C++ включается во все выпуски Visual Studio, но по умолчанию он не установлен. Сведения о том, как установить Visual Studio и средства разработки C++, см. в статье «Установка поддержки C++ в Visual Studio».
Для Windows 8.1 и более поздних версий пакет SDK DirectX входит в пакет SDK для Windows. Не требуется загружать никаких дополнительных компонентов. Дополнительные сведения см. в разделе «Где находится пакет SDK DirectX?».
Чтобы создать приложения DirectX для Windows 7, Windows Vista или Windows XP, можно скачать автономный пакет SDK DirectX (ссылка на архив).
В DirectX Graphics and Gaming есть информация и примеры, которые помогут вам приступить к программированию DirectX.
Приложения Windows Win32 содержат статьи, описывающие создание базового классического приложения Для Windows.
Разработка игр обсуждает универсальная платформа Windows разработку игр, но многие из концепций также применяются к классическим играм.
Настройка среды для программирования с помощью Direct3D 12
Описывает установку, средства и поддерживаемые библиотеки, составляющие эффективную среду разработки Direct3D 12.
- Среда разработки
- Поддерживаемые языки
- Вспомогательные структуры
- Библиотека управления памятью
- Поддерживаемые средства и библиотеки
- Примеры
- Уровень отладки
- Обучающие видео
- Связанные темы
Среда разработки
Заголовки и библиотеки Direct3D 12 являются частью пакета SDK для Windows 10. Для использования Direct3D 12 не требуется отдельная загрузка или установка.
После установки программного обеспечения пакета SDK для Windows 10 и Visual Studio настройка среды программирования Direct3D 12 будет завершена. Рекомендуется использовать Visual Studio 2019, так как он будет включать средства отладки графики D3D12, но более ранние версии Visual Studio будут работать для разработки программ.
Чтобы использовать API Direct3D 12, включите D3d12.h и ссылку на D3d12.lib или запросите точки входа непосредственно в D3d12.dll.
Доступны следующие заголовки и библиотеки. Расположение статических библиотек зависит от версии (32- или 64-разрядной) Windows 10, работающей на компьютере.
Имя файла заголовка или библиотеки | Описание | Расположение установки |
---|---|---|
D3d12.h | Заголовок API Direct3D 12 | %WindowsSdkDir\Include%WindowsSDKVersion%\\um |
D3d12.lib | Библиотека статической заглушки API Direct3D 12 | %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch |
D3d12.dll | Динамическая библиотека API Direct3D 12 | %WINDIR%\System32 |
D3d12SDKLayers.h | Заголовок отладки Direct3D 12 | %WindowsSdkDir\Include%WindowsSDKVersion%\\um |
D3d12SDKLayers.dll | Динамическая библиотека отладки Direct3D 12 | %WINDIR%\System32 |
Поддерживаемые языки
C++ — это единственный поддерживаемый язык для разработки Direct3D 12. C# и другие языки .NET не поддерживаются.
Вспомогательные структуры
Существует ряд вспомогательных структур, которые, в частности, упрощают инициализацию ряда структур D3D12. Эти структуры и некоторые служебные функции находятся в заголовке D3dx12.h. Этот заголовок открытый код и может быть изменен разработчиком по мере необходимости. Скачайте его из вспомогательной библиотеки D3D12 и обратитесь к разделу Вспомогательные структуры и функции для D3D12.
Библиотека управления памятью
Для скачивания доступна вспомогающая библиотека управления памятью, которую можно интегрировать в приложение, чтобы более точно соответствовать поведению управления памятью D3D11. Как библиотека управления стилями D3D11, она наиболее эффективна в приложениях, которые по-прежнему используют стратегию выделения выделенного стиля ресурсов . В частности, библиотеку следует рассматривать как шаг, который позволит вернуться к эффективному управлению памятью D3D11 в сценариях с ограниченными объемами памяти (например, низкопроизводительные карты памяти, 4 КБ, параметры ценовой категории «Ультра» и т. д.). API D3D12 используют методы, которые позволяют повысить эффективность памяти по сравнению с D3D11, хотя эти методы могут быть сложными и трудоемкими для реализации.
Обратите внимание, что эта библиотека находится в процессе работы и может меняться со временем. Используйте приведенные ниже ссылки, чтобы получить доступ к библиотеке и примерам.
Поддерживаемые средства и библиотеки
Следующие библиотеки можно использовать с Direct3D 12.
Библиотека | Назначение | Документация |
---|---|---|
Пакет инструментов DirectX для DirectX 12 | Большой набор вспомогательных классов для написания кода Direct3D 12 C++ для приложений универсальная платформа Windows (UWP), классических приложений Win32 для Windows 10 и эксклюзивных приложений Xbox One. | Вики-сайт DirectX12TK |
DirectXTex | Используйте его для чтения и записи DDS-файлов, а также для выполнения различных операций обработки содержимого текстуры, включая изменение размера, преобразование формата, создание MIP-карты, сжатие блоков для ресурсов текстур среды выполнения Direct3D и преобразование сопоставления высоты в обычную карту. | Вики-сайт DirectXTex |
DirectXMesh | Используйте его для выполнения различных операций обработки геометрического содержимого, включая создание нормальных и тангенсных кадров, вычисление смежности треугольников и оптимизацию кэша вершин. | Вики-сайт DirectXMesh |
DirectXMath | Большое количество вспомогательных классов и методов для поддержки векторов, скаляров, матриц, кватернионов и многих других математических операций. | Документация по DirectXMath на сайте MSDN |
UVAtlas | Используйте его для создания и упаковки атласа текстур изохартов. | Вики-сайт UVAtlas |
Примеры
Список рабочих примеров D3D12, а также способы их поиска и выполнения см. в разделе Рабочие примеры.
Пошаговые инструкции по добавлению кода для включения определенных функций см. в разделе Пошаговые инструкции по коду D3D12.
Уровень отладки
Уровень отладки обеспечивает расширенную дополнительную проверку параметров и согласованности (например, проверку компоновки шейдера и привязки ресурсов, проверку согласованности параметров и создание отчетов об ошибках).
Для Windows 10, чтобы создать устройство, поддерживающее уровень отладки, включите необязательную функцию «Графические инструменты». Перейдите на панель Параметры в разделе Система, Компоненты приложений & , Управление необязательными компонентами, Добавить компонент, а затем найдите «Графические инструменты».
Заголовок, необходимый для поддержки слоя отладки D3D12SDKLayers.h, включен по умолчанию из d3d12.h.
Когда уровень отладки перечисляет утечки памяти, он выводит список указателей интерфейса объекта вместе с понятными именами. По умолчанию используется понятное имя unnamed<>. Понятное имя можно задать с помощью метода ID3D12Object::SetName . Как правило, эти вызовы следует компилировать из рабочей версии.
Мы рекомендуем использовать отладочный уровень для отладки приложений, чтобы обеспечить их очистку от ошибок и предупреждений. Уровень отладки помогает писать код Direct3D 12. Кроме того, производительность может повыситься при использовании уровня отладки, так как вы сразу же можете увидеть причины неясных ошибок отрисовки или даже черных экранов в их источнике. Уровень отладки предоставляет предупреждения для многих проблем. Пример:
- Забыл задать текстуру, но считывать из нее в пиксельном шейдере.
- Глубина вывода, но состояние трафарета глубины не привязано.
- Сбой создания текстуры с помощью INVALIDARG.
Задайте компилятору определение D3DCOMPILE_DEBUG, чтобы сообщить компилятору HLSL о включении отладочной информации в большой двоичный объект шейдера.
#define D3DCOMPILE_DEBUG 1
Дополнительные сведения обо всех интерфейсах и методах отладки см. в справочнике по уровню отладки.
Общие сведения об использовании отладочного слоя см. в статье Общие сведения об уровне отладки D3D12.
Обучающие видео
В руководствах по расширенному обучению DirectX есть ряд видеоматериалов по Direct3D 12 и Windows 10, включая видео о средствах отладки графики и сообщения об ошибках графики.
Как подключить directx sdk к visual studio 2019
Прежде чем начать компилировать исходные коды, немного настроим MS Visual C++ 2010, указав пути к подсоединяемым библиотекам (.lib) и заголовочным файлам (.h) MS DirectX SDK. Для других версий MS Visual C++ процедура ничем не отличается, кроме расположения соответствующих меню и их внешнего вида. Начиная с версии 8.0 (MS Visual Studio 2005), при создании нового Проекта IDE автоматически создаёт для него Решение.
«Решением» (от англ. solution) в принятой у Microsoft терминологии называется группа Проектов, объединённых общей темой. То есть, в одно Решение может входить несколько Проектов. В нашем случае это неважно, и в нашем Решении будет один Проект (пока один). Обрати внимание, что по умолчанию все Решения и Проекты сохраняются в каталог c:\users\\documents\visual studio 2010\Projects (при желании можно изменить).
Из-за того, что MS Visual C++ 2010 хранит все настройки Проектов в их же каталоге, данную процедуру настроки путей придётся проделывать при создании каждого нового Проекта (причём, даже в том случае, когда эти Проекты принадлежат к одному и тому же Решению!). Пути сохраняются вместе с Проектом и при повторном открытии настраивать их заново не требуется. Также не требуется настройка путей при открытии примеров из MS DirectX SDK и некоторых других Проектов/Решений, в которых уже содержатся сведения о расположении необходимых библиотек и заголовочных файлов.
- Убедись, что MS Visual C++ 2010 и DirectX SDK успешно установлены, и что MS Visual C++ 2010 запускается (по умолчанию ярлык расположен в меню Пуск).
Если нет, читай статью здесь: Устанавливаем Microsoft Visual C plus plus 2010 Express
Последнюю версию DirectX SDK нетрудно найти в поисковиках.
Пара слов о DirectX SDK
- Бесплатный набор библиотек, заголовочных файлов и примеров для создания игр и мультимедийных приложений под DirectX. Без него никак.
- Не трудно найти в Интернете.
- Не имеет своей программной оболочки. Для просмотра содержимого открой соответствующий каталог (в нашем случае C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)) с помощью Проводника Windows.
В соответствующих каталогах расположены файлы:
Developer Runtime | Девелоперские (они же debug-, отладочные, для разработчиков) версии библиотек времени выполнения (runtime library). На всякий случай. |
Documentation | Документация по DirectX SDK. Всё на английском языке. Размещена в двух CHM-файлах (directx_sdk.chm и windows_graphics.chm). Компилированные файлы справки Windows (CHM) имеют удобную древовидную навигацию и поиск. |
Extras | Отладочные (debug) версии драйверов DirectSound. Для данного курса не потребуются. |
Include | Заголовочные файлы для импорта функций DirectX. Самый нужный каталог. Путь к нему мы чуть позднее укажем в настройках MS Visual C++. |
Lib | Библиотеки DLL, содержащие функции DirectX. Самый нужный каталог. Путь к нему мы чуть позднее укажем в настройках MS Visual C++. Внутри 2 подкаталога («x64» и «x86»). Указываем только «x86». (Программирование под 64-битную архитектуру это тема для отдельного курса.) |
Redist | Т.н. «библиотека времени выполнения». Необходима для запуска игр, спрограммированных под MS DirectX, на ПК. Включена по-умолчанию во все версии ОС MS Windows Vista/7. Так как это самая свежая версия, смело запускаем DXSETUP.exe из данного каталога и следуем шагам несложной программы установки для обновления компонентов DirectX в вашей ОС. |
Samples | 790 мегабайт примеров! Разложены по папкам в виде проектов (или т.н. «решений» (solution)), которые открываются и компилируются в исполняемый .exe файл в (правильно сконфигурированной) среде MS Visual Studio. Настоятельно рекомендуется для самостоятельного изучения, как только мы подготовим к работе нашу IDE. Для удобного просмотра можно использовать обозреватель примеров из подкаталога SampleBrowser. Все описания и комментарии в исходных кодах на английском языке. |
System | Системные файлы для инсталляции и деинсталляции DirectX SDK, DOT NET Framework 2.0 (специальная надстройка для ОС для выполнения приложений, созданных под архитектуру .NET; здесь не потребуется) и др.. На всякий случай установим vc10redist_x86.exe из подкаталога uninstall (библиотеки времени выполнения для приложений, спрограммированных на IDE MS Visual С++ 2010). |
Utilities | Утилиты (служебные приложения). Содержит множество дополнительных приложений (подкаталог /bin — исполняемые двоичные файлы; подкаталог source — исходные коды этих приложений) для конвертирования мешей (полигональных сеток), текстур, для стандартизованного описания игрового проекта и другие. Пока не нужен. |
Создаём Проект
С недавних пор меню настройки путей к библиотекам (.lib) и заголовочным файлам (.h) переехало из Сервис->Параметры (здесь и далее значком «->» будем обозначать выпадаюшее меню или подпункт меню) в Проект->Свойства. Таким образом, ВСЕ настройки и пути к каталогам теперь хранятся в соответствующих файлах Проектов. Причём, даже если эти Проекты размещаются в пределах одного и того же Решения.
Поэтому создадим Проект.
- В верхней части окна IDE видим полосу Главного меню (Файл, Правка, Вид. ). Выбираем в нём: Файл->Создать->Проект.
- В окне «Создать проект» выбираем: «Проект Win32», в строке «Имя» пишем название проекта (в нашем случае Test01). Строки «Расположение» и «Имя Решения» заполняются автоматически (при необходимости изменяем). Жмём «OK», «Далее».
- На странице «Параметры приложения»: оставляем «Приложение Windows» и отмечаем пункт «Пустой проект». Жмём «Готово».
Проект создан. Так как это «Пустой проект», он не содержит в себе никаких файлов. В левой части расположен «Обозреватель решений». Если его нет, в главном меню выбираем: Вид->Другие окна->Обозреватель решений. Или комбинация горячих клавиш Ctrl+Alt+L. В Обозревателе решений видна древовидная структура Проектов, входящих в данное Решение. Чуть ниже названия Проекта видим специально заготовленные папки (в MSVC++2010 они называются «фильтры») для файлов Проекта:
Внешние зависимости | Чаще всего здесь размещаются заголовочные файлы различных сторонних библиотек. Причём, они представлены здесь в виде ссылок. «Физически» файлы, как правило, находятся за пределами каталога Проекта и не являются его частью. Содержимое каталога «Внешние зависимости» (если внимательно посмотреть, то он тоже является своеобразным ярлыком или ссылкой) генерируется автоматически в процессе линковки и поиска так называемых внешних «зависимых» библиотек. |
Заголовочные файлы | Содержит заголовочные файлы Проекта (.h). |
Файлы исходного кода | Содержит исходные файлы Проекта (.cpp). |
Файлы ресурсов | Содержит так называемые «бинарные» ресурсы (формы, иконки, звуки и т.д.) |
В данный момент все эти каталоги пусты. Программист самостоятельно создаёт внутри них соответствующие исходные и заголовочные файлы, последовательно редактируя их в правой части окна IDE.
Сейчас это неважно. Так что вернёмся к указанию путей к MS DirectX SDK.
Настраиваем MS Visual C++ 2010 и DirectX SDK
- В Обозревателе решений видим: «Решение «Test01″», а строкой ниже жирным шрифтом название Проекта (Test01). Наводим курсор на эту строку (с названием Проекта), щелчок правой кнопкой мыши. Во всплывающем меню выбираем пункт «Свойства». Или в Главном меню выбираем Проект->Свойства. Или нажимаем Alt+F7.
- В появившемся меню свойств проекта выбираем «Каталоги VC++». В правой части этой страницы расположены пути ко всевозможным каталогам. Здесь нас интересуют только 2 строки: Каталоги включения и Каталоги библиотек.
- Щёлкаем левой кнопкой мыши по пункту Каталоги включения. В правой части этой строки видим кнопку с чёрным треугольником, указывающим на наличие выпадающего меню. Нажимаем на неё -> выбираем «Изменить. «
- В появившемся меню «Каталоги включения» жмём кнопку «Создать строку» (с жёлтой папкой) и указываем полный путь к заголовочным (include) файлам DirectX SDK. В нашем случае это C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include. Можно просто выбрать каталог из дерева каталогов, нажав кнопку с троеточием, расположенную справа от строки ввода. Жмём «ОК».
- Щёлкаем левой кнопкой мыши по пункту Каталоги библиотек. В правой части этой строки видим кнопку с чёрным треугольником, указывающим на наличие выпадающего меню. Нажимаем на неё -> выбираем «Изменить. «
- В появившемся меню «Каталоги библиотек» жмём кнопку «Создать строку» (с жёлтой папкой) и указываем полный путь к 32-разрядным версиям файлов библиотек (lib) DirectX SDK. В нашем случае это C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86. Можно просто выбрать каталог из дерева каталогов, нажав кнопку с троеточием, расположенную справа от строки ввода. Жмём «ОК».
Описывает установку, средства и поддерживаемые библиотеки, которые составляют эффективную среду разработки Direct3D 12.
Среда разработки
заголовки и библиотеки Direct3D 12 входят в состав пакета SDK для Windows 10. Для использования Direct3D 12 не требуется отдельная загрузка или установка.
после установки программного обеспечения Windows 10 SDK и Visual Studio настройка среды программирования Direct3D 12 будет завершена. рекомендуется Visual Studio 2019, так как в нем будут включены средства отладки графики D3D12, но более ранние версии Visual Studio будут работать для разработки программ.
Чтобы использовать API Direct3D 12, включите D3d12. h и свяжите с D3d12. lib или запросите точки входа непосредственно в D3d12.dll.
Доступны следующие заголовки и библиотеки. расположение статических библиотек зависит от версии (32-bit или 64-bit) Windows 10, выполняемой на компьютере.
Имя файла заголовка или библиотеки | Описание | Расположение установки |
---|---|---|
D3d12. h | Заголовок API Direct3D 12 | % Виндовссдкдир \ включить % виндовссдкверсион% \ \ум |
D3d12. lib | Статическая библиотека API-заглушки Direct3D 12 | % Виндовссдкдир \ lib % виндовссдкверсион% \ \ум\арч |
D3d12.dll | Динамическая библиотека API Direct3D 12 | % WINDIR% \ system32 |
D3d12SDKLayers. h | Заголовок отладки Direct3D 12 | % Виндовссдкдир \ включить % виндовссдкверсион% \ \ум |
D3d12SDKLayers.dll | Динамическая библиотека отладки Direct3D 12 | % WINDIR% \ system32 |
Поддерживаемые языки
Вспомогательные структуры
Существует ряд вспомогательных структур, которые, в частности, упрощают инициализацию ряда структур D3D12. Эти структуры и некоторые служебные функции находятся в заголовке D3dx12. h. Этот заголовок является открытым исходным кодом и может быть изменен разработчиком по мере необходимости — скачайте его из вспомогательной библиотеки D3D12 и ознакомьтесь со вспомогательными структурами и функциями для D3D12.
Библиотека управления памятью
Вспомогательная библиотека управления памятью доступна для загрузки, которую можно интегрировать в приложение, чтобы более точно сопоставить поведение управления памятью D3D11. Как библиотека управления стилями D3D11, она наиболее эффективна с приложениями, которые по-прежнему используют стратегию выделения ресурсов с выделенным стилем. В частности, Библиотека должна рассматриваться в качестве пошагового воссоздания, что позволяет D3D11 выполнять управление памятью в сценариях с ограниченным объемом памяти (например, с низкими картами памяти, 4-килобайтами, параметрами Ultra и т. д.). API-интерфейсы D3D12 делают возможными приемы, позволяющие повысить эффективность использования памяти по сравнению с D3D11, хотя эти методы могут быть непростыми и длительными для реализации.
Обратите внимание, что эта библиотека является выполняемой работой и может меняться со временем. Используйте приведенные ниже ссылки для доступа к библиотеке и примерам.
Поддерживаемые средства и библиотеки
С Direct3D 12 можно использовать следующие библиотеки.
Библиотека | Назначение | Документация |
---|---|---|
Набор средств DirectX SDK для DirectX 12 | значительная коллекция вспомогательных классов для написания кода C++ 12 для приложений универсальная платформа Windows (UWP), классических приложений Win32 для Windows 10 и Xbox One эксклюзивных приложений. | Вики-сайт DirectX12TK |
DirectXTex | Используйте его для чтения и записи файлов DDS, а также для выполнения различных операций по обработке содержимого текстур, включая изменение размера, преобразование формата, MIP создание карт, блочное сжатие для ресурсов текстуры среды выполнения Direct3D, а также преобразование высоты в режим обычного преобразования карт. | Вики-сайт Директкстекс |
DirectXMesh | Используйте его для выполнения различных операций обработки геометрического содержимого, включая создание обычных и касательных кадров, вычисление соседей по смежности с вершиной и оптимизацию кэша вершины. | Вики-сайт Директксмеш |
DirectXMath | Большое количество вспомогательных классов и методов для поддержки векторов, скаляров, матриц, кватернионов и многих других математических операций. | Документация по Директксмас на сайте MSDN |
UVAtlas | Используйте его для создания и упаковки текстуры исочарт Atlas. | Вики-сайт Уватлас |
Примеры
Список рабочих примеров D3D12 и их поиск и запуск см. в разделе рабочие образцы.
Пошаговые инструкции по добавлению кода для включения определенных функций см. в разделе D3D12 Code (пошаговые руководства).
Отладочный слой
для Windows 10, чтобы создать устройство, поддерживающее уровень отладки, включите необязательный компонент «графические средства». перейдите на панель Параметры, в разделе система, приложения & компоненты, управление дополнительными компонентами, добавление компонента и поиск «графические инструменты».
Заголовок, необходимый для поддержки слоя отладки D3D12SDKLayers. h, включен по умолчанию из d3d12. h.
Когда уровень отладки перечисляет утечки памяти, он выводит список указателей на объектные интерфейсы и их понятные имена. Понятное имя по умолчанию — безымянное < >. Понятное имя можно задать с помощью метода ID3D12Object:: SetName . Как правило, следует компилировать эти вызовы из рабочей версии.
Рекомендуется использовать отладочный уровень для отладки приложений, чтобы гарантировать, что они будут очищать ошибки и предупреждения. Слой отладки помогает писать код Direct3D 12. Кроме того, производительность может увеличиться при использовании слоя отладки, поскольку можно сразу увидеть причины ошибок скрытой отрисовки или даже черные экраны в источнике. Отладочный слой предоставляет предупреждения для многих проблем. Пример:
- Забыли установить текстуру, но прочесть ее в шейдере пикселей.
- Глубина вывода, но не имеет привязки состояния шаблона глубины.
- Не удалось создать текстуру с помощью INVALIDARG.
Задайте компилятор, определяющий _ отладку D3DCOMPILE, чтобы сообщить компилятору HLSL о необходимости включения отладочной информации в большой двоичный объект шейдера.
Подробные сведения о всех интерфейсах и методах отладки см. в справочнике по отладочному слою.
Общие сведения об использовании слоя отладки см. в разделе понимание уровня отладки D3D12.
Обучающие видеоролики
—>Приветствую Вас Гость | RSS
Уроки по работе с DirectX, включая Direct3D и другие инструменты
Теперь создадим исходный файл:
- В окне Solution Explorer, кликаем правой кнопкой на папке Source Files
- Выбираем Add->New item
- В открывшемся окне выбираем C++ File и вводим имя(например main.cpp)
Новый исходный файл откроется для редактирования.
Допишем в начало кода такие строки:
Для работы с DirectX в настройках проекта нужно указать пути к файлам и подключить библиотеки.(Для разработки на директе нужен DirectX SDK).
Для этого:
int WinMain(HINSTANCE hInstance,HINSTANCE hPrevinst, LPSTR cmdline,int showcmd)
Теперь нужно создать главное окно приложения, в которое будем производить визуализацию. Напишем это функцией.
Для начала — объявим глобальные переменные:
HWND mWnd; //Дескриптор окна
IDirect3DDevice9* dev; //устройство Direct3D
LRESULT WINAPI WndProc(HWND Wnd, UINT msg, WPARAM wParam, LPARAM lParam)
break;
default: return DefWindowProc(Wnd,msg,wParam,lParam);
>
>
А большего нам и не нужно Итак, теперь нужно инициализировать Direct3D устройство.
Для этого напишем такую функцию:
bool CreateDirect3DDevice(int Width, int Height)
Если не понятны назначения и параметры функций — кури справку. Теперь программируем в основном коде программы.
В начале вызываем Функцию создания окна и устройства:
if(!CreateDirect3DDevice(800,600)) return -1;
Теперь создадим чё-нить, что будем отображать. В DirectX есть такая полезная вещь, как Mesh. Она позволяет удобно рисовать объекты
Также можно создавать примитивы. Создадим чайник. Для этого есть функция D3DXCreateTeapot()
ID3DXMesh *te;
D3DXCreateTeapot(dev,&te,0);//создаём чайник
Дальше устанавливаем стандартные настройки(материал, проэкция и свет)
D3DMATRIX pr;
D3DXMatrixPerspectiveFovLH((D3DXMATRIX*)&pr,3.1415/4,800.0f/600.0f,0.1,100); //считаем матрицу проэкции
dev->SetTransform(D3DTS_PROJECTION,&pr);//устанавливаем матрицу проэкции
dev->SetRenderState(D3DRS_ZENABLE,true); //Включаем Z-буффер, для управлений глубиной прорисовки объектов.
D3DMATERIAL9 mat; //создаём материал
ZeroMemory(&mat,sizeof(mat));
mat.Diffuse.a=1;
mat.Diffuse.r=1; //красный
dev->SetMaterial(&mat); //устанавливаем тукущий материал
D3DLIGHT9 l; //создаём свет
ZeroMemory(&l,sizeof(l));
l.Type=D3DLIGHT_POINT;//точечное освещение
l.Diffuse.a=1;
l.Diffuse.r=1;
l.Diffuse.g=1;
l.Diffuse.b=1; //белый цвет
l.Position=D3DXVECTOR3(2,5,-3); //позиция источника цвета
l.Range=100; //диапазон
l.Attenuation0=1; //.
dev->SetLight(0,&l);//установка света
dev->LightEnable(0,true);//включаем свет
dev->SetRenderState(D3DRS_LIGHTING,true);//включаем возможность освещения
Устанавливаем матрицу вида:
D3DXMatrixIdentity((D3DXMATRIX*)&view); //устанавливаем матрицу вида, т.к. камера у нас не двигается — ставим пустую матрицу.
dev->SetTransform(D3DTS_VIEW,&view); //ставим
Всё, дальше лень комментировать, вобщем вот главный цикл. Что не понятно — спрашивай.
D3DMATRIX w;
D3DXMatrixTranslation((D3DXMATRIX*)&w,0,0,5);//матрица мира. Ставим объек в позицию 0, 0, 5
D3DMATRIX rm;
r+=0.01;
D3DXMatrixRotationY((D3DXMATRIX*)&rm,r);//матрица поворота
dev->SetTransform(D3DTS_WORLD,&w);//поворачиваем вокруг Y на r радиан
Читайте также:
- Smartgen hgm6120uc программа для прошивки
- Как найти периметр в excel
- Как сделать картинку черно белой в ворде
- Как поставить текст по центру в фотошопе
- Удалить повторяющиеся символы в строке oracle