Поделиться через


Настройка среды программирования 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, работающей на компьютере.

Имя файла заголовка или библиотеки Описание Расположение установки
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.

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

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

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

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

#define D3DCOMPILE_DEBUG 1

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

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

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

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

основные сведения о Direct3D 12