다음을 통해 공유


Direct3D 11 기능 데이터를 사용하여 Direct3D 기능 수준 보완

최신 버전의 Windows에서 추가된 기능을 포함하여 선택적 기능에 대한 디바이스 지원을 확인하는 방법을 알아보세요.

Direct3D 기능 수준은 서로 다른 세대의 그래픽 하드웨어에 대략적으로 해당하는, 잘 정의된 GPU 기능 집합을 나타냅니다. 이렇게 하면 하드웨어 capaibilities를 확인하는 작업이 크게 간소화되고 다양한 디바이스에서 일관된 환경을 제공합니다.

레거시 하드웨어, 모바일 하드웨어 및 최신 하드웨어를 비롯한 다양한 하드웨어 구현 간의 분산을 고려하기 위해 일부 기능은 선택 사항으로 간주됩니다. 이러한 기능에 대한 지원은 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을 지원하는 경우 D3D11_FEATURE_DATA_D3D11_OPTIONS 표시된 모든 선택적 기능은 SAD4ShaderInstructionsExtendedDoublesShaderInstructions제외하고 자동으로 지원됩니다.

런타임은 항상 다음과 같은 멤버 그룹을 동일하게 설정합니다. 즉, 그룹화된 모든 값이 함께 TRUE 혹은 FALSE 입니다.

  • 드라이버가 본 DiscardAPI드라이버가 본 FlagsForUpdateAndCopy
  • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsettingMapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRVMultisampleRTVWithForcedSampleCountOne

기능 수준 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을 지원하도록 보장되지 않습니다. 앱은 컴퓨팅 셰이더 4.1 프로그램에서 예외가 발생하는 경우, 컴퓨팅 셰이더 4.0으로 되돌아갈 준비가 되어 있어야 합니다. ID3D11Device::CreateComputeShader

기능 수준 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 프로그램 내에서 배정밀도 계산을 지원할 수 있습니다. 셰이더에서 이중 정밀도 계산을 지원한다는 것은, 계산 셰이더 프로그램 내에서 부동 소수점 수치가 이중 정밀도(double)로 변환될 수 있으며, 이를 통해 각 셰이더 패스 내에서 더 높은 정밀도의 계산 이점을 얻을 수 있음을 의미합니다. 배정밀도 숫자는 출력 버퍼에 기록되기 전에 다시 부동 소수로 변환해야 합니다. 배정밀도 나눗셈이 반드시 지원되지 않을 수 있습니다.

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::DiscardAPIsSeenByDriver: 개발 중에 이 멤버를 모니터링하여 DiscardViewDiscardResource가 도움이 되었을 수 있는 하드웨어에서 레거시 드라이버를 배제할 수 있습니다.

D3D11_FEATURE_DATA_MARKER_SUPPORT: 하드웨어 및 드라이버가 GPU 프로파일링에 대한 데이터 표시를 지원하는 경우 지원됩니다.

디바이스