Condividi tramite


Esecuzione di query sulle funzionalità

L'applicazione può individuare il livello di supporto per l'associazione di risorse (nonché il livello di supporto per molte altre funzionalità), con una chiamata a ID3D12Device::CheckFeatureSupport.

Come eseguire una query per il livello di associazione di risorse

Questo primo esempio è incentrato sull'associazione di risorse. Ogni livello di associazione di risorse è un superset di livelli inferiori nella funzionalità, quindi il codice che funziona su un determinato livello funziona invariato in qualsiasi livello superiore.

I livelli di associazione delle risorse sono costanti nell'enumerazione D3D12_RESOURCE_BINDING_TIER.

Per eseguire una query per il livello di associazione di risorse, usare codice come questo. Questo esempio di codice illustra il modello generale per l'esecuzione di query per uno dei vari tipi di supporto delle funzionalità.

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

Si noti che qualsiasi costante enumerata che si passa (D3D12_FEATURE_D3D12_OPTIONS, in questo caso) ha una struttura dati corrispondente che riceve informazioni su quella funzionalità o set di funzionalità (D3D12_FEATURE_DATA_D3D12_OPTIONS, in questo caso). Passare sempre un puntatore alla struttura che corrisponde alla costante enumerata passata.

Come eseguire query per qualsiasi livello di funzionalità

Oltre al livello di associazione di risorse, sono disponibili molte altre funzionalità il cui livello di supporto può essere richiesto usando lo stesso modello illustrato nell'esempio di codice precedente. È sufficiente passare una costante diversa dall'enumerazione D3D12_FEATURE a ID3D12Device::CheckFeatureSupport (per indicare all'API quale funzionalità richiedere informazioni di supporto) e si passa un puntatore a un'istanza della struttura corrispondente (in cui ricevere le informazioni richieste).

Supporto hardware per i formati DXGI

Per visualizzare le tabelle dei formati DXGI e delle funzionalità hardware, fare riferimento a questi argomenti.