Настройка среды программирования Direct3D 12

Описывает установку, средства и поддерживаемые библиотеки, составляющие продуктивную среду разработки 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-разрядной или 64-разрядной) Windows 10, работающей на компьютере.

Имя файла заголовка или библиотеки Description Расположение установки
D3d12.h Заголовок API Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Библиотека заглушки API Static Direct3D 12 %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Библиотека API Dynamic Direct3D 12 %WINDIR%\System32
D3d12SDKLayers.h Заголовок отладки Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Библиотека отладки Dynamic Direct3D 12 %WINDIR%\System32

Поддерживаемые языки

C++ — это единственный поддерживаемый язык для разработки Direct3D 12, C# и других языков .NET.

Вспомогательные структуры

Существует ряд вспомогательных структур, которые, в частности, упрощают инициализацию ряда структур D3D12. Эти структуры и некоторые служебные функции находятся в заголовке D3dx12.h. Этот заголовок открытый код и может быть изменен разработчиком по мере необходимости — скачайте его из вспомогательной библиотеки D3D12 и обратитесь к вспомогательным структурам и функциям для D3D12.

Библиотека управления памятью

Вспомогающая библиотека управления памятью доступна для скачивания, которую можно интегрировать в приложение, чтобы более точно соответствовать поведению управления памятью D3D11. В качестве библиотеки управления стилем D3D11 наиболее эффективно с приложениями, которые по-прежнему используют стратегию выделения стиля выделенных ресурсов . В частности, библиотека должна рассматриваться как шаговый камень, который поможет вам вернуться к D3D11, выполняя управление памятью в сценариях с ограниченным объемом памяти (например, низкоуровневые карта памяти, 4k, ультра параметров и т. д.). 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 Используйте это для создания и упаковки атласа текстуры isochart. Вики-сайт UVAtlas

 

Примеры

Список рабочих примеров D3D12 и их поиск и запуск см. в разделе "Рабочие примеры".

Пошаговые инструкции по добавлению кода для включения определенных функций см. в пошаговом руководстве по коду D3D12.

Уровень отладки

Уровень отладки обеспечивает обширную дополнительную проверку параметров и согласованности (например, проверку компоновки шейдера и привязки ресурсов, проверку согласованности параметров и описание ошибок отчетов).

Примечание.

Для Windows 10 для создания устройства, поддерживающего уровень отладки, включите необязательную функцию "Графические инструменты". В Windows 10 22H2 перейдите на панель Параметры в разделе "Система". В более ранних версиях Windows 10 перейдите на панель Параметры в разделе "Приложения > и функции". Перейдите к дополнительным функциям > , а затем найдите "Графические инструменты".

Заголовок, необходимый для поддержки уровня отладки D3D12SDKLayers.h, включен по умолчанию из d3d12.h.

Когда уровень отладки выводит список утечек памяти, он выводит список указателей интерфейса объекта вместе с их понятными именами. Понятное имя по умолчанию — "<unnamed>". Понятное имя можно задать с помощью метода ID3D12Object::SetName . Как правило, эти вызовы следует компилировать из рабочей версии.

Мы рекомендуем использовать уровень отладки для отладки приложений, чтобы обеспечить очистку ошибок и предупреждений. Слой отладки помогает писать код Direct3D 12. Кроме того, производительность может увеличиться при использовании слоя отладки, так как вы можете сразу увидеть причины неясных ошибок отрисовки или даже черных экранов в их источнике. Уровень отладки предоставляет предупреждения для многих проблем. Например:

  • Забыл задать текстуру, но прочитать ее в шейдере пикселей.
  • Глубина вывода, но не привязана к состоянию элементов глубины.
  • Сбой создания текстуры с помощью INVALIDARG.

Задайте компилятору определение D3DCOMPILE_DEBUG, чтобы сообщить компилятору HLSL включить сведения отладки в большой двоичный объект шейдера.

#define D3DCOMPILE_DEBUG 1

Дополнительные сведения обо всех интерфейсах и методах отладки см. в справочнике по уровню отладки.

Общие сведения об использовании слоя отладки см. в разделе "Общие сведения об уровне отладки D3D12".

Учебные видео

Существует ряд видеоматериалов Direct3D 12 и Windows 10, связанных с DirectX для расширенного обучения, включая видео на средства отладки графики и создание отчетов об ошибках графики.

Общие сведения о Direct3D 12