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


Запрос возможностей

Приложение может обнаружить уровень поддержки привязки ресурсов (а также уровень поддержки для многих других функций) с вызовом ID3D12Device::CheckFeatureSupport.

Как выполнить запрос для уровня привязки ресурсов

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

Уровни привязки ресурсов являются константами в перечислении D3D12_RESOURCE_BINDING_TIER.

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

D3D12_RESOURCE_BINDING_TIER get_resource_binding_tier(::ID3D12Device* pIDevice)
{
    D3D12_FEATURE_DATA_D3D12_OPTIONS featureSupport{};
    winrt::check_hresult(
        pIDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &featureSupport, sizeof(featureSupport))
    );

    switch (featureSupport.ResourceBindingTier)
    {
    case D3D12_RESOURCE_BINDING_TIER_1:
        // Tier 1 is supported.
        break;

    case D3D12_RESOURCE_BINDING_TIER_2:
        // Tiers 1 and 2 are supported.
        break;

    case D3D12_RESOURCE_BINDING_TIER_3:
        // Tiers 1, 2, and 3 are supported.
        break;
    }

    return featureSupport.ResourceBindingTier;
}

Обратите внимание, что любая перечисленная константа, передаваемая (D3D12_FEATURE_D3D12_OPTIONS, в данном случае) имеет соответствующую структуру данных, которая получает сведения об этой функции или наборе функций (D3D12_FEATURE_DATA_D3D12_OPTIONS, в данном случае). Всегда передайте указатель на структуру, которая соответствует передаваемой вами перечислимой константе.

Как запрашивать любой уровень компонентов

Кроме уровня привязки ресурсов, существует множество других функций, уровень поддержки которых можно запросить, используя тот же шаблон, показанный в приведенном выше примере кода. Вы просто передаете другую константу из перечисления D3D12_FEATURE в ID3D12Device::CheckFeatureSupport (чтобы указать API, какую возможность запрашивать для получения информации о поддержке), и передаете указатель на экземпляр соответствующей структуры (в ней вы получите запрошенную информацию).

Поддержка оборудования для форматов DXGI

Сведения о таблицах форматов DXGI и аппаратных функций см. в этих разделах.