Como enumerar adaptadores
Este tópico mostra como usar a DXGI (Infraestrutura Gráfica do Microsoft DirectX) para enumerar os adaptadores gráficos disponíveis em um computador. O Direct3D 10 e 11 pode usar DXGI para enumerar adaptadores.
Geralmente, você precisa enumerar adaptadores por estes motivos:
- Para determinar quantos adaptadores gráficos estão instalados em um computador.
- Para ajudá-lo a escolher qual adaptador usar para criar um dispositivo Direct3D.
- Para recuperar um objeto IDXGIAdapter que você pode usar para recuperar recursos do dispositivo.
Para enumerar adaptadores
Crie um objeto IDXGIFactory chamando a função CreateDXGIFactory . O exemplo de código a seguir demonstra como inicializar um objeto IDXGIFactory .
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
Enumerar por meio de cada adaptador chamando o método IDXGIFactory::EnumAdapters . O parâmetro Adapter permite que você especifique um número de índice baseado em zero do adaptador para enumerar. Se nenhum adaptador estiver disponível no índice especificado, o método retornará DXGI_ERROR_NOT_FOUND.
O exemplo de código a seguir demonstra como enumerar por meio dos adaptadores em um computador.
for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i) { ... }
O exemplo de código a seguir demonstra como enumerar todos os adaptadores em um computador.
Observação
Para o Direct3D 11.0 e posterior, recomendamos que os aplicativos sempre usem IDXGIFactory1 e CreateDXGIFactory1 .
std::vector <IDXGIAdapter*> EnumerateAdapters(void)
{
IDXGIAdapter * pAdapter;
std::vector <IDXGIAdapter*> vAdapters;
IDXGIFactory* pFactory = NULL;
// Create a DXGIFactory object.
if(FAILED(CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)))
{
return vAdapters;
}
for ( UINT i = 0;
pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND;
++i )
{
vAdapters.push_back(pAdapter);
}
if(pFactory)
{
pFactory->Release();
}
return vAdapters;
}
Tópicos relacionados