기능 쿼리

애플리케이션은 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 형식 및 하드웨어 기능의 테이블을 보려면 다음 항목을 참조하세요.