Consulta de funcionalidades

La aplicación puede detectar el nivel de compatibilidad con el enlace de recursos (así como el nivel de compatibilidad con muchas otras características), con una llamada a ID3D12Device::CheckFeatureSupport.

Consulta del nivel de enlace de recursos

Este primer ejemplo se centra en el enlace de recursos. Cada nivel de enlace de recursos es un superconjunto de niveles inferiores en la funcionalidad, por lo que el código que funciona en un nivel determinado funciona sin cambios en cualquier nivel superior.

Los niveles de enlace de recursos son constantes en la enumeración D3D12_RESOURCE_BINDING_TIER .

Para consultar el nivel de enlace de recursos, use código como este. En este ejemplo de código se muestra el patrón general para consultar cualquiera de los distintos tipos de compatibilidad con características.

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;
}

Tenga en cuenta que cualquier constante enumerada que pase (D3D12_FEATURE_D3D12_OPTIONS, en este caso) tiene una estructura de datos correspondiente que recibe información sobre esa característica o conjunto de características (D3D12_FEATURE_DATA_D3D12_OPTIONS, en este caso). Pase siempre un puntero a la estructura que coincida con la constante enumerada que se pasa.

Consulta de cualquier nivel de característica

Además del nivel de enlace de recursos, hay muchas otras características cuyo nivel de compatibilidad puede consultar con el mismo patrón que se muestra en el ejemplo de código anterior. Simplemente pasa una constante diferente de la enumeración D3D12_FEATURE a ID3D12Device::CheckFeatureSupport (para indicar a la API qué característica solicitar información de soporte técnico) y pasa un puntero a una instancia de la estructura coincidente (en la que se va a recibir la información solicitada).

Compatibilidad de hardware con formatos DXGI

Para ver tablas de formatos DXGI y características de hardware, consulte estos temas.