이 항목에서는 디바이스지원하는 가장 높은 기능 수준 가져오는 방법을 보여 줍니다. Direct3D 11 디바이스는 D3D_FEATURE_LEVEL 열거형에 정의된 고정된 기능 수준 집합을 지원합니다. 디바이스에서 지원하는 가장 높은 기능 수준 알고 있는 경우 해당 디바이스에 적합한 코드 경로를 실행할 수 있습니다.
디바이스 기능 수준 가져오기
ppDevice 매개 변수에 NULL 지정하는 동안 D3D11CreateDevice 함수 또는 D3D11CreateDeviceAndSwapChain 함수를 호출합니다. 디바이스를 만들기 전에 이 작업을 수행할 수 있습니다.
-또는-
디바이스를 만든 후 ID3D11Device::GetFeatureLevel 호출합니다.
마지막 단계에서 반환된 D3D_FEATURE_LEVEL 열거형의 값을 검사하여 지원되는 기능 수준을 확인합니다.
다음 코드 예제에서는 D3D11CreateDevice 함수를 호출하여 지원되는 가장 높은 기능 수준을 확인하는 방법을 보여 줍니다. D3D11CreateDevice FeatureLevel 변수에 지원되는 가장 높은 기능 수준을 저장합니다. 이 코드를 사용하여 D3D11CreateDevice 반환하는D3D_FEATURE_LEVEL 열거형 형식의 값을 검사할 수 있습니다. 이 코드는 모든 기능 수준을 명시적으로 나열합니다(Direct3D 11.1 및 Direct3D 11.2의 경우).
메모
컴퓨터에 Direct3D 11.1 런타임이 있고 pFeatureLevelsNULL설정된 경우 이 함수는 D3D_FEATURE_LEVEL_11_1 디바이스를 만들지 않습니다. D3D_FEATURE_LEVEL_11_1 디바이스를 만들려면 D3D_FEATURE_LEVEL_11_1포함하는 D3D_FEATURE_LEVEL 배열을 명시적으로 제공해야 합니다. Direct3D 11.1 런타임이 설치되지 않은 컴퓨터에서 D3D_FEATURE_LEVEL_11_1 포함하는 D3D_FEATURE_LEVEL 배열을 제공하는 경우 이 함수는 E_INVALIDARG 함께 즉시 실패합니다.
HRESULT hr = E_FAIL;
D3D_FEATURE_LEVEL MaxSupportedFeatureLevel = D3D_FEATURE_LEVEL_9_1;
D3D_FEATURE_LEVEL FeatureLevels[] = {
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
};
hr = D3D11CreateDevice(
NULL,
D3D_DRIVER_TYPE_HARDWARE,
NULL,
0,
&FeatureLevels,
ARRAYSIZE(FeatureLevels),
D3D11_SDK_VERSION,
NULL,
&MaxSupportedFeatureLevel,
NULL
);
if(FAILED(hr))
{
return hr;
}
10Level9 참조 섹션에서는 다양한 ID3D11Device 및 ID3D11DeviceContext 메서드가 다양한 10Level9 기능 수준에서 동작하는 방식의 차이점을 나열합니다.
관련 항목
-
Direct3D 11 사용하는 방법