如何:列舉配接器
本主題說明如何使用 Microsoft DirectX 圖形基礎結構 (DXGI) 來列舉電腦上的可用圖形介面卡。 Direct3D 10 和 11 可以使用 DXGI 來列舉配接器。
您通常需要列舉配接器,原因如下:
- 判斷電腦上安裝多少個圖形介面卡。
- 協助您選擇要用來建立 Direct3D 裝置的介面卡。
- 若要擷取可用來擷取裝置功能的 IDXGIAdapter 物件。
列舉配接器
藉由呼叫CreateDXGIFactory 函式來建立IDXGIFactory物件。 下列程式碼範例示範如何初始化 IDXGIFactory 物件。
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
呼叫 IDXGIFactory::EnumAdapters 方法,以列舉每個配接器。 Adapter參數可讓您指定要列舉之配接器的以零起始的索引編號。 如果指定索引處沒有可用的配接器,方法會傳回 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;
}
相關主題