Como obter o nível de recurso do dispositivo
Este tópico mostra como obter o nível de recurso mais alto com suporte de um dispositivo. Os dispositivos Direct3D 11 dão suporte a um conjunto fixo de níveis de recursos definidos na enumeração D3D_FEATURE_LEVEL . Quando você souber o nível de recurso mais alto com suporte por um dispositivo, poderá executar caminhos de código apropriados para esse dispositivo.
Para obter o nível de recurso do dispositivo
Chame a função D3D11CreateDevice ou as funções D3D11CreateDeviceAndSwapChain ao especificar NULL para o parâmetro ppDevice . Você pode fazer isso antes da criação do dispositivo.
- ou -
Chame ID3D11Device::GetFeatureLevel após a criação do dispositivo.
Examine o valor da enumeração D3D_FEATURE_LEVEL retornada da última etapa para determinar o nível de recurso com suporte.
O exemplo de código a seguir demonstra como determinar o nível de recurso com suporte mais alto chamando a função D3D11CreateDevice . D3D11CreateDevice armazena o nível de recurso mais alto com suporte na variável FeatureLevel. Você pode usar esse código para examinar o valor do D3D_FEATURE_LEVEL tipo enumerado que D3D11CreateDevice retorna. Observe que esse código lista todos os níveis de recursos explicitamente (para Direct3D 11.1 e Direct3D 11.2).
Observação
Se o runtime do Direct3D 11.1 estiver presente no computador e pFeatureLevels estiver definido como NULL, essa função não criará um dispositivo D3D_FEATURE_LEVEL_11_1 . Para criar um dispositivo D3D_FEATURE_LEVEL_11_1 , você deve fornecer explicitamente uma matriz de D3D_FEATURE_LEVEL que inclua D3D_FEATURE_LEVEL_11_1. Se você fornecer uma matriz D3D_FEATURE_LEVEL que contenha D3D_FEATURE_LEVEL_11_1 em um computador que não tenha o runtime do Direct3D 11.1 instalado, essa função falhará imediatamente com 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;
}
A seção 10Level9 Reference lista as diferenças entre como vários métodos ID3D11Device e ID3D11DeviceContext se comportam em vários níveis de recursos 10Level9.
Tópicos relacionados