如何:列舉配接器

本主題說明如何使用 Microsoft DirectX Graphics Infrastructure (DXGI) 列舉電腦上的可用圖形介面卡。 Direct3D 10 和 11 可以使用 DXGI 來列舉配接器。

基於下列原因,您通常需要列舉配接器:

  • 判斷電腦上安裝多少張圖形介面卡。
  • 協助您選擇要用來建立 Direct3D 裝置的介面卡。
  • 若要擷取可用來擷取裝置功能的 IDXGIAdapter 物件。

列舉配接器

  1. 呼叫CreateDXGIFactory函式來建立IDXGIFactory物件。 下列程式碼範例示範如何初始化 IDXGIFactory 物件。

    IDXGIFactory * pFactory = NULL;
    
    CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
    
  2. 呼叫 IDXGIFactory::EnumAdapters 方法來列舉每個配接器。 Adapter參數可讓您指定要列舉之配接器的以零起始的索引編號。 如果指定索引處沒有可用的配接器,方法會傳回 DXGI_ERROR_NOT_FOUND

    下列程式碼範例示範如何列舉電腦上的配接器。

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

下列程式碼範例示範如何列舉電腦上的所有介面卡。

注意

針對 Direct3D 11.0 和更新版本,建議應用程式一律改用 IDXGIFactory1CreateDXGIFactory1

 

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;

}

如何使用 Direct3D 11