Postupy: Získání úrovně funkcí zařízení
Tato témata ukazují, jak získat nejvyšší úroveň funkce podporovanou zařízením . Zařízení Direct3D 11 podporují pevnou sadu úrovní funkcí definovaných v D3D_FEATURE_LEVEL výčtu. Pokud znáte nejvyšší úroveň funkce podporovanou zařízením, můžete spustit cesty kódu, které jsou pro toto zařízení vhodné.
Získání úrovně funkcí zařízení
Volání funkce D3D11CreateDevice nebo funkce D3D11CreateDeviceAndSwapChain při zadávání NULL pro parametr ppDevice. Můžete to udělat před vytvořením zařízení.
- nebo -
Zavolejte ID3D11Device::GetFeatureLevel po vytvoření zařízení.
Prozkoumejte hodnotu vrácené výčtové hodnoty D3D_FEATURE_LEVEL z posledního kroku a určete podporovanou úroveň funkcí.
Následující příklad kódu ukazuje, jak určit nejvyšší podporovanou úroveň funkce voláním funkce D3D11CreateDevice funkce. D3D11CreateDevice ukládá nejvyšší podporovanou úroveň funkcí v proměnné FeatureLevel. Tento kód můžete použít k prozkoumání hodnoty D3D_FEATURE_LEVEL výčtu typu, který D3D11CreateDevice vrátí. Všimněte si, že tento kód obsahuje všechny úrovně funkcí explicitně (pro Direct3D 11.1 a Direct3D 11.2).
Poznámka
Pokud je v počítači spuštěn modul runtime Direct3D 11.1 a pFeatureLevels je nastavená na null, tato funkce nevytvoří zařízení D3D_FEATURE_LEVEL_11_1. Chcete-li vytvořit zařízení D3D_FEATURE_LEVEL_11_1, musíte explicitně uvést pole D3D_FEATURE_LEVEL, které zahrnuje D3D_FEATURE_LEVEL_11_1. Pokud zadáte pole D3D_FEATURE_LEVEL, které obsahuje D3D_FEATURE_LEVEL_11_1 v počítači, který nemá nainstalovaný modul runtime Direct3D 11.1, funkce okamžitě selže s 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;
}
Oddíl 10Level9 Reference uvádí rozdíly mezi tím, jak se různé metody ID3D11Device a ID3D11DeviceContext chovají na různých úrovních funkcí 10Level9.
Související témata