Direct3D 11 기능 데이터를 사용하여 Direct3D 기능 수준 보완
최신 버전의 Windows에 추가된 기능을 포함하여 선택적 기능에 대한 디바이스 지원을 검사 방법을 알아보세요.
Direct3D 기능 수준은 다양한 세대의 그래픽 하드웨어에 해당하는 잘 정의된 GPU 기능 집합을 나타냅니다. 이렇게 하면 하드웨어 용량을 확인하는 작업이 크게 간소화되고 다양한 디바이스에서 일관된 환경을 제공합니다.
레거시 하드웨어, 모바일 하드웨어 및 최신 하드웨어를 포함하여 다양한 하드웨어 구현 간의 분산을 고려하기 위해 일부 기능은 선택 사항으로 간주됩니다. 이러한 기능에 대한 지원은 ID3D11Device::CheckFeatureSupport 를 호출하고 관련 D3D11_FEATURE_DATA_* 구조를 제공하여 확인할 수 있습니다. 이 항목에서는 다양한 선택적 Direct3D 11 기능, 일부 기능이 함께 작동하는 방법 및 모든 선택적 기능을 확인하지 않도록 하는 방법에 대해 설명합니다.
선택적 기능 지원을 검사 방법
ID3D11Device::CheckFeatureSupport를 호출하여 사용하려는 선택적 기능을 나타내는 구조를 제공합니다. 메서드가 S_OK 반환하는 경우 이는 선택적 기능을 지원하는 Direct3D 런타임 버전에 있음을 의미합니다. E_INVALIDARG 반환하는 경우 이는 선택적 기능이 추가되기 전의 Direct3D 11 런타임 버전에 있음을 의미합니다. 즉, 동일한 버전의 Direct3D 11 이상에서 도입된 다른 선택적 기능과 함께 선택적 기능을 사용할 수 없습니다.
기능 지원 검사에 필요한 작업을 최소화할 수 있나요?
올바른 Direct3D 11 런타임(일반적으로 Windows 버전과 연결됨)을 갖는 것 외에도 그래픽 드라이버는 선택적 기능을 지원할 수 있을 만큼 최신 상태여야 합니다. WDDM 사양은 하드웨어에서 지원할 수 있는 경우 선택적 기능을 지원해야 합니다. 따라서 그래픽 드라이버가 특정 버전의 Windows에 추가된 선택적 기능 중 하나를 지원하는 경우 일반적으로 그래픽 드라이버가 해당 버전의 Windows에 추가된 다른 기능을 지원한다는 의미입니다. 예를 들어 디바이스 드라이버가 기능 수준 9에서 그림자를 지원하는 경우 디바이스 드라이버가 WDDM 1.2 이상임을 알 수 있습니다.
참고 Microsoft Direct3D 디바이스가 기능 수준 11.1을 지원하는 경우 SAD4ShaderInstructions 및 ExtendedDoublesShaderInstructions를 제외하고 D3D11_FEATURE_DATA_D3D11_OPTIONS 표시된 모든 선택적 기능이 자동으로 지원됩니다.
런타임은 항상 멤버의 다음 그룹화가 동일하게 설정됩니다. 즉, 그룹화의 모든 값은 TRUE 또는 FALSE 입니다.
- DiscardAPIsSeenByDriver 및 FlagsForUpdateAndCopySeenByDriver
- ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting 및 MapNoOverwriteOnDynamicConstantBuffer
- MapNoOverwriteOnDynamicBufferSRV 및 MultisampleRTVWithForcedSampleCountOne
기능 수준 11.2 옵션(D3D11_FEATURE_D3D11_OPTIONS1): 이 필드에 표시된 선택적 기능은 독립적이며 개별적으로 확인해야 합니다.
Windows RT 8.1 및 Windows Phone 8.1 디바이스에 대한 기능 지원
Windows RT 태블릿 디바이스는 다양한 기능 수준과 선택적 기능을 지원할 수 있으며, 전력 소비 감소에 최적화되어 있으며, 불연속 GPU 대신 통합 그래픽을 사용합니다. ARM 디바이스용 Windows 스토어 앱은 기능 수준 9.1을 지원해야 합니다. Windows RT용 DirectX 앱은 사용 가능한 경우 간단한 인스턴싱과 같은 전력 및 주기를 절약할 수 있는 선택적 기능을 활용해야 합니다.
Windows Phone 8개의 모바일 디바이스는 특정 선택적 기능을 사용하여 기능 수준 9.3을 지원합니다. Windows Phone 8은 Direct3D 기능 수준 9_3을 참조하세요.
Direct3D 11 선택적 기능은 무엇인가요?
이 문서의 나머지 부분에는 Direct3D 11.2에서 사용할 수 있는 선택적 기능에 대해 설명합니다. 기능은 추가된 시점을 기준으로 시간순으로 설명되므로 Direct3D 11의 다른 버전에 있는 기능을 파악할 수 있습니다.
기능 수준 10에 대한 선택적 컴퓨팅 셰이더 지원
기능 수준 10 디바이스에는 항상 다음 기능을 사용할 수 있습니다.
D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS:TRUE이면 디바이스에서 컴퓨팅 셰이더를 지원합니다. 여기에는 원시 및 구조화된 버퍼에 대한 지원이 포함됩니다.
기능 수준 10_0 또는 10_1 디바이스가 이 기능을 지원하는 경우 디바이스는 컴퓨팅 셰이더 4.1을 지원하도록 보장되지 않습니다. ID3D11Device::CreateComputeShader가 컴퓨팅 셰이더 4.1 프로그램에서 예외를 throw하는 경우 앱은 컴퓨팅 셰이더 4.0으로 대체되도록 준비해야 합니다.
기능 수준 9에 대한 선택적 기능
Windows 8 기능 수준 9에 대해 다음 기능이 추가됩니다.
D3D11_FEATURE_DATA_D3D9_OPTIONS: 2의 전원이 아닌 텍스처를 사용하여 래핑 텍스처 주소 지정에 대한 지원을 나타냅니다. 지원되는 경우 D3D11_TEXTURE_ADDRESS_MODE_WRAP 이러한 텍스처와 함께 사용할 수 있습니다.
D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT: 셰이더 모델 4.0 기능 수준 9_x 셰이더의 비교 샘플러에 대한 지원을 나타냅니다. 이는 픽셀 셰이더의 깊이 테스트에 사용되므로 그림자 매핑 및 스텐실과 같은 일반적인 기술을 지원할 수 있습니다.
Windows 8.1 시작하는 기능 수준 9 디바이스에 대해 다음 기능이 추가되었습니다.
D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT: DirectX 9 수준 하드웨어에서 사용할 수 있는 간단한 인스턴스화 기능에 대한 지원을 나타냅니다. 단순 인스턴스화는 입력 레이아웃을 정의하는 데 사용되는 D3D11_INPUT_ELEMENT_DESC 구조체의 모든 InstanceDataStepRate 멤버가 1과 같아야 했음을 의미합니다. 기능 수준 9.3 이상을 지원하는 디바이스에는 이미 인스턴스화에 대한 전체 지원이 포함되어 있습니다.
셰이더 프로그램에 대한 선택적 부동 소수점 정밀도 지원
D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT: 이 구조체의 필드는 최소 정밀도를 사용할 때 부동 소수점 숫자의 길이를 나타내고 전체 32비트 부동 소수점 정밀도만 지원되는 경우 0을 나타냅니다.
기능 수준 9 디바이스의 경우 꼭짓점 셰이더의 최소 정밀도는 픽셀 셰이더와 다를 수 있습니다. 꼭짓점 셰이더의 전체 자릿수는 AllOtherShaderStagesMinPrecision 필드에 표시됩니다.
D3D11_FEATURE_DATA_DOUBLES: 기능 수준 11 디바이스는 셰이더 모델 5.0 프로그램 내에서 배정밀도 계산을 지원할 수 있습니다. 셰이더 내에서 배정밀도 계산을 지원한다는 것은 부동 소수점이 컴퓨팅 셰이더 프로그램 내에서 doubles로 변환되어 각 셰이더 패스 내에서 더 높은 정밀도 계산의 이점을 제공한다는 것을 의미합니다. 배정밀도 숫자는 출력 버퍼에 기록되기 전에 다시 floats로 변환되어야 합니다. 배정밀도 구분이 반드시 지원되는 것은 아닙니다.
Direct3D 11.2에 대한 추가 기능
Direct3D 11.2는 Direct3D 11 디바이스에서 지원될 수 있는 4개의 새로운 선택적 기능을 추가합니다. 이러한 기능은 D3D11_FEATURE_DATA_D3D11_OPTIONS1 구조에 있습니다.
TiledResourcesTier: 타일형 리소스에 대한 지원을 나타내고 지원되는 계층 수준을 나타냅니다.
MinMaxFiltering: 필터링 결과를 최소(또는 최대) 값과 비교하는 D3D11_FILTER_MINIMUM_* 및 D3D11_FILTER_MAXIMUM_* 필터링 옵션에 대한 지원을 나타냅니다. D3D11_FILTER 참조하세요.
ClearViewAlsoSupportsDepthOnlyFormats: 깊이 버퍼 리소스 뷰 지우기 지원을 나타냅니다.
MapOnDefaultBuffers:D3D11_USAGE_DEFAULT 플래그를 사용하여 만든 렌더링 대상 버퍼 매핑에 대한 지원을 나타냅니다.
타일 기반 렌더링
D3D11_FEATURE_DATA_ARCHITECTURE_INFO: 그래픽 디바이스가 렌더링 명령을 일괄 처리하고 기본적으로 타일 기반 렌더링을 수행하는지 여부를 나타냅니다. 그래픽 엔진 최적화를 위한 힌트로 사용할 수 있습니다.
개발 및 디버깅을 위한 선택적 기능
D3D11_FEATURE_DATA_D3D11_OPTIONS::D scardAPIsSeenByDriver: 개발 중에 이 멤버를 모니터링하여 DiscardView 및 DiscardResource 가 도움이 되었을 수 있는 하드웨어의 레거시 드라이버를 배제할 수 있습니다.
D3D11_FEATURE_DATA_MARKER_SUPPORT: 하드웨어 및 드라이버가 GPU 프로파일링에 대한 데이터 표시를 지원하는 경우 지원됩니다.
관련 항목