方法: アダプターを列挙する
このトピックでは、Microsoft DirectX グラフィックス インフラストラクチャ (DXGI) を使用して、コンピューターで使用可能なグラフィックス アダプターを列挙する方法について説明します。 Direct3D 10 と 11 では、DXGI を使用してアダプターを列挙できます。
通常、次の理由でアダプターを列挙する必要があります。
- コンピューターにインストールされているグラフィックス アダプターの数を確認します。
- Direct3D デバイスの作成に使用するアダプターを選択するのに役立ちます。
- デバイス機能の取得に使用できる IDXGIAdapter オブジェクトを取得するには。
アダプターを列挙するには
CreateDXGIFactory 関数を呼び出して IDXGIFactory オブジェクトを作成します。 次のコード例では、 IDXGIFactory オブジェクトを初期化する方法を示します。
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
IDXGIFactory::EnumAdapters メソッドを呼び出して、各アダプターを列挙します。 Adapter パラメーターを使用すると、列挙するアダプターの 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;
}
関連トピック