방법: 어댑터 열거
이 항목에서는 Microsoft DXGI(DirectX Graphics Infrastructure)를 사용하여 컴퓨터에서 사용 가능한 그래픽 어댑터를 열거하는 방법을 보여 줍니다. Direct3D 10 및 11은 DXGI를 사용하여 어댑터를 열거할 수 있습니다.
일반적으로 다음과 같은 이유로 어댑터를 열거해야 합니다.
- 컴퓨터에 설치된 그래픽 어댑터 수를 확인합니다.
- Direct3D 디바이스를 만드는 데 사용할 어댑터를 선택하는 데 도움이 됩니다.
- 디바이스 기능을 검색하는 데 사용할 수 있는 IDXGIAdapter 개체를 검색합니다.
어댑터를 열거하려면
CreateDXGIFactory 함수를 호출하여 IDXGIFactory 개체를 만듭니다. 다음 코드 예제에서는 IDXGIFactory 개체를 초기화하는 방법을 보여 줍니다.
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
IDXGIFactory::EnumAdapters 메서드를 호출하여 각 어댑터를 열거합니다. 어댑터 매개 변수를 사용하면 열거할 어댑터의 인덱스 번호(0부터 시작)를 지정할 수 있습니다. 지정된 인덱스에서 사용할 수 있는 어댑터가 없으면 메서드는 DXGI_ERROR_NOT_FOUND 반환합니다.
다음 코드 예제에서는 컴퓨터의 어댑터를 통해 열거 하는 방법을 보여 줍니다.
for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i) { ... }
다음 코드 예제에서는 컴퓨터의 모든 어댑터를 열거하는 방법을 보여 줍니다.
참고
Direct3D 11.0 이상의 경우 앱은 항상 IDXGIFactory1 및 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;
}
관련 항목