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


Уровни программного обеспечения

Среда выполнения Direct3D 11 создается с помощью слоев, начиная с базовых функциональных возможностей в основе и создания дополнительных функций и возможностей разработчика в внешних слоях. В этом разделе описаны функциональные возможности каждого слоя.

Как правило, слои добавляют функциональные возможности, но не изменяют существующее поведение. Например, основные функции будут иметь одинаковые возвращаемые значения независимо от экземпляра слоя отладки, хотя при создании экземпляра слоя отладки могут быть предоставлены дополнительные выходные данные отладки.

Чтобы создать слои при создании устройства, вызовите D3D11CreateDevice или D3D11CreateDeviceAndSwapChain и укажите одно или несколько значений D3D11_CREATE_DEVICE_FLAG.

Direct3D 11 предоставляет следующие уровни среды выполнения:

Основной уровень

Основной слой существует по умолчанию; обеспечивает очень тонкое сопоставление между API и драйвером устройства, минимизируя затраты на вызовы высокой частоты. Так как основной слой является важным для производительности, он выполняет только критически важную проверку. Остальные слои являются необязательными.

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

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

Чтобы создать устройство, поддерживающее уровень отладки, необходимо установить пакет SDK DirectX (чтобы получить D3D11SDKLayers.dll), а затем указать флаг D3D11_CREATE_DEVICE_DEBUG при вызове функции D3D11CreateDevice или функции D3D11CreateDeviceAndSwapChain. Если вы запускаете приложение с включенным уровнем отладки, приложение будет значительно медленнее. Но, чтобы обеспечить очистку приложения от ошибок и предупреждений перед его отправкой, используйте уровень отладки. Дополнительные сведения см. в разделе "Использование слоя отладки для отладки приложений".

Примечание.

Для Windows 7 с обновлением платформы для Windows 7 (КБ2670838) или Windows 8.x для создания устройства, поддерживающего уровень отладки, установите пакет SDK для Windows 8.x для получения D3D11_1SDKLayers.dll.

Примечание.

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

Примечание.

Сведения о удаленной отладке приложений DirectX см. в разделе "Отладка приложений DirectX" удаленно.

 

Кроме того, можно включить или отключить флаг отладки с помощью панель управления DirectX, включенных в состав пакета SDK DirectX.

Когда уровень отладки выводит список утечек памяти, он выводит список указателей интерфейса объекта вместе с их понятными именами. Понятное имя по умолчанию — "<unnamed>". Понятное имя можно задать с помощью метода ID3D11DeviceChild::SetPrivateData и guid WKPDID_D3DDebugObjectName , который находится в D3Dcommon.h. Например, чтобы присвоить имя pTexture с именем SDKLayer mytexture.jpg, используйте следующий код:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );

Как правило, эти вызовы следует компилировать из рабочей версии.

Устройства