Windows Dev Center

Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

How To: Enumerate Adapters

This topic shows how to use Microsoft DirectX Graphics Infrastructure (DXGI) to enumerate the available graphics adapters on a computer. Direct3D 10 and 11 can use DXGI to enumerate adapters.

You generally need to enumerate adapters for these reasons:

  • To determine how many graphics adapters are installed on a computer.
  • To help you choose which adapter to use to create a Direct3D device.
  • To retrieve an IDXGIAdapter object that you can use to retrieve device capabilities.

Ff476877.wedge(en-us,VS.85).gifTo enumerate adapters

  1. Create an IDXGIFactory object by calling the CreateDXGIFactory function. The following code example demonstrates how to initialize an IDXGIFactory object.
    
    
    IDXGIFactory * pFactory = NULL;
    
    CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
    
    
  2. Enumerate through each adapter by calling the IDXGIFactory::EnumAdapters method. The Adapter parameter allows you to specify a zero-based index number of the adapter to enumerate. If no adapter is available at the specified index, the method returns DXGI_ERROR_NOT_FOUND.

    The following code example demonstrates how to enumerate through the adapters on a computer.

    
    
    for (UINT i = 0; 
         pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; 
    	 ++i) 
    { ... }
    
    
    

The following code example demonstrates how to enumerate all adapters on a computer.

Note  For Direct3D 11.0 and later, we recommend that apps always use IDXGIFactory1 and CreateDXGIFactory1 instead.

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;

}


 

 

Community Additions

Show:
© 2015 Microsoft