Procedura: Ottenere il livello di funzionalità del dispositivo
In questo argomento viene illustrato come ottenere il livello di funzionalità più alto 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 D3D11CreateDevice o le funzioni D3D11CreateDeviceAndSwapChain durante la specifica di NULL per il parametro ppDevice. È possibile eseguire questa operazione prima della creazione del dispositivo.
- oppure -
Chiamare ID3D11Device::GetFeatureLevel dopo la creazione del dispositivo.
Esaminare il valore dell'enumerazione restituita D3D_FEATURE_LEVEL dall'ultimo passaggio per determinare il livello di funzionalità supportato.
Nell'esempio di codice seguente viene illustrato come determinare il livello di funzionalità supportato più alto chiamando la funzione D3D11CreateDevice . D3D11CreateDevice archivia il livello di funzionalità più alto supportato 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 in modo esplicito tutti i livelli di funzionalità (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 specificare 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 che non dispone del runtime Direct3D 11.1 installato, questa funzione ha esito negativo immediatamente 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 Riferimenti 10Level9 elenca le differenze tra i vari metodi ID3D11Device e ID3D11DeviceContext a vari livelli di funzionalità 10Level9.
Argomenti correlati