Procedura: Ottenere il livello di funzionalità del dispositivo
Questo argomento mostra come ottenere il livello di funzionalità più elevato supportato da un dispositivo . I dispositivi Direct3D 11 supportano un set fisso di livelli di funzionalità definiti nell'enumerazione D3D_FEATURE_LEVEL. Quando si conosce il livello di funzionalità più alto supportato da un dispositivo, è possibile eseguire percorsi di codice appropriati per tale dispositivo.
Per ottenere il livello di funzionalità del dispositivo
Chiamare la funzione di D3D11CreateDevice o la funzione di D3D11CreateDeviceAndSwapChain specificando NULL per il parametro ppDevice. È possibile eseguire questa operazione prima della creazione del dispositivo.
-o-
Dopo la creazione del dispositivo, chiamare ID3D11Device::GetFeatureLevel.
Esaminare il valore dell'enumerazione D3D_FEATURE_LEVEL restituita dall'ultimo passaggio per determinare il livello di funzionalità supportato.
L'esempio di codice seguente illustra come determinare il livello di funzionalità supportato più alto chiamando la funzioneD3D11CreateDevice. D3D11CreateDevice archivia il livello di funzionalità supportato più alto nella variabile FeatureLevel. È possibile usare questo codice per esaminare il valore del tipo enumerato D3D_FEATURE_LEVEL restituito da D3D11CreateDevice. Si noti che questo codice elenca tutti i livelli di funzionalità in modo esplicito (per Direct3D 11.1 e Direct3D 11.2).
Nota
Se il runtime Direct3D 11.1 è presente nel computer e pFeatureLevels è impostato su NULL, questa funzione non creerà un dispositivo D3D_FEATURE_LEVEL_11_1. Per creare un dispositivo D3D_FEATURE_LEVEL_11_1, è necessario fornire in modo esplicito una matrice di D3D_FEATURE_LEVEL che include D3D_FEATURE_LEVEL_11_1. Se si specifica una matrice di D3D_FEATURE_LEVEL che contiene D3D_FEATURE_LEVEL_11_1 in un computer in cui non è installato il runtime Direct3D 11.1, questa funzione ha immediatamente esito negativo con 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;
}
La sezione 10Level9 Reference elenca le differenze tra il comportamento dei vari metodi di ID3D11Device e ID3D11DeviceContext a vari livelli di funzionalità 10Level9.
Argomenti correlati