Procedura: Enumerare adapter
Questo argomento illustra come usare Microsoft DirectX Graphics Infrastructure (DXGI) per enumerare le schede grafiche disponibili in un computer. Direct3D 10 e 11 può usare DXGI per enumerare schede.
In genere è necessario enumerare gli adattatori per questi motivi:
- Per determinare il numero di schede grafiche installate in un computer.
- Per scegliere quale adattatore usare per creare un dispositivo Direct3D.
- Per recuperare un oggetto IDXGIAdapter che è possibile usare per recuperare le funzionalità del dispositivo.
Per enumerare gli adattatori
Creare un oggetto IDXGIFactory chiamando la funzione CreateDXGIFactory . Nell'esempio di codice seguente viene illustrato come inizializzare un oggetto IDXGIFactory .
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
Enumerare attraverso ogni scheda chiamando il metodo IDXGIFactory::EnumAdapters . Il parametro Adapter consente di specificare un numero di indice in base zero dell'adapter da enumerare. Se non è disponibile alcuna scheda nell'indice specificato, il metodo restituisce DXGI_ERROR_NOT_FOUND.
Nell'esempio di codice seguente viene illustrato come enumerare gli adapter in un computer.
for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i) { ... }
Nell'esempio di codice seguente viene illustrato come enumerare tutte le schede in un computer.
Nota
Per Direct3D 11.0 e versioni successive, è consigliabile che le app usino sempre 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;
}
Argomenti correlati