Настройка среды программирования 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 для расширенного обучения, включая видео на средства отладки графики и создание отчетов об ошибках графики.
См. также