다음을 통해 공유


방법: 어댑터 열거

이 항목에서는 Microsoft DXGI(DirectX Graphics Infrastructure)를 사용하여 컴퓨터에서 사용 가능한 그래픽 어댑터를 열거하는 방법을 보여 줍니다. Direct3D 10 및 11은 DXGI를 사용하여 어댑터를 열거할 수 있습니다.

일반적으로 다음과 같은 이유로 어댑터를 열거해야 합니다.

  • 컴퓨터에 설치된 그래픽 어댑터 수를 확인합니다.
  • Direct3D 디바이스를 만드는 데 사용할 어댑터를 선택하는 데 도움이 됩니다.
  • 디바이스 기능을 검색하는 데 사용할 수 있는 IDXGIAdapter 개체를 검색합니다.

어댑터를 열거하려면

  1. CreateDXGIFactory 함수를 호출하여 IDXGIFactory 개체를 만듭니다. 다음 코드 예제에서는 IDXGIFactory 개체를 초기화하는 방법을 보여 줍니다.

    IDXGIFactory * pFactory = NULL;
    
    CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
    
  2. IDXGIFactory::EnumAdapters 메서드를 호출하여 각 어댑터를 열거합니다. 어댑터 매개 변수를 사용하면 열거할 어댑터의 인덱스 번호(0부터 시작)를 지정할 수 있습니다. 지정된 인덱스에서 사용할 수 있는 어댑터가 없으면 메서드는 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을 사용하는 방법