Abfragen der Funktionalität

Ihre Anwendung kann mit einem Aufruf von ID3D12Device::CheckFeatureSupport die Ebene der Unterstützung für die Ressourcenbindung (sowie die Supportebene für viele andere Features) ermitteln.

Abfragen der Ressourcenbindungsebene

In diesem ersten Beispiel liegt der Schwerpunkt auf der Ressourcenbindung. Jede Ressourcenbindungsebene ist eine Obermenge von niedrigeren Ebenen in der Funktionalität, sodass Code, der auf einer bestimmten Ebene funktioniert, auf jeder höheren Ebene unverändert funktioniert.

Die Ressourcenbindungsebenen sind Konstanten in der D3D12_RESOURCE_BINDING_TIER-Enumeration .

Verwenden Sie Code wie diesen, um die Ressourcenbindungsebene abzufragen. In diesem Codebeispiel wird das allgemeine Muster für Abfragen nach verschiedenen Arten von Featureunterstützung veranschaulicht.

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

Beachten Sie, dass jede enumerierte Konstante, die Sie übergeben (in diesem Fall D3D12_FEATURE_D3D12_OPTIONS), über eine entsprechende Datenstruktur verfügt, die Informationen zu diesem Feature oder Satz von Features empfängt (in diesem Fall D3D12_FEATURE_DATA_D3D12_OPTIONS). Übergeben Sie immer einen Zeiger auf die Struktur, die der übergebenen Enumerationskonstante entspricht.

Abfragen für jede Featureebene

Neben der Ressourcenbindungsebene gibt es viele andere Features, deren Unterstützungsebene Sie mit demselben Muster abfragen können, das im obigen Codebeispiel gezeigt wird. Sie übergeben einfach eine andere Konstante von der D3D12_FEATURE-Enumeration an ID3D12Device::CheckFeatureSupport (um der API mitzuteilen, für welches Feature Supportinformationen angefordert werden soll), und Sie übergeben einen Zeiger auf eine instance der übereinstimmenden Struktur (in der die angeforderten Informationen empfangen werden).

Hardwareunterstützung für DXGI-Formate

Informationen zum Anzeigen von Tabellen mit DXGI-Formaten und Hardwarefeatures finden Sie in diesen Themen.