Cómo: Enumerar adaptadores
En este tema se muestra cómo usar microsoft DirectX Graphics Infrastructure (DXGI) para enumerar los adaptadores de gráficos disponibles en un equipo. Direct3D 10 y 11 pueden usar DXGI para enumerar adaptadores.
Por lo general, debe enumerar adaptadores por estos motivos:
- Para determinar cuántos adaptadores de gráficos se instalan en un equipo.
- Para ayudarle a elegir qué adaptador usar para crear un dispositivo Direct3D.
- Para recuperar un objeto IDXGIAdapter que puede usar para recuperar las funcionalidades del dispositivo.
Para enumerar adaptadores
Cree un objeto IDXGIFactory llamando a la función CreateDXGIFactory . En el ejemplo de código siguiente se muestra cómo inicializar un objeto IDXGIFactory .
IDXGIFactory * pFactory = NULL; CreateDXGIFactory(__uuidof(IDXGIFactory) ,(void**)&pFactory)
Para enumerar a través de cada adaptador, llame al método IDXGIFactory::EnumAdapters . El parámetro Adapter permite especificar un número de índice de base cero del adaptador que se va a enumerar. Si no hay ningún adaptador disponible en el índice especificado, el método devuelve DXGI_ERROR_NOT_FOUND.
En el ejemplo de código siguiente se muestra cómo enumerar los adaptadores de un equipo.
for (UINT i = 0; pFactory->EnumAdapters(i, &pAdapter) != DXGI_ERROR_NOT_FOUND; ++i) { ... }
En el ejemplo de código siguiente se muestra cómo enumerar todos los adaptadores de un equipo.
Nota:
Para Direct3D 11.0 y versiones posteriores, se recomienda que las aplicaciones siempre usen IDXGIFactory1 y CreateDXGIFactory1 en su lugar.
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;
}
Temas relacionados