Почему мой второй адаптер не появляется?
В связи с тем, что на моем графическом процессоре (AMD Radeon 6600M) вместо Intel HD3000 используется несколько игр и графических приложений, я написал этот небольшой код, чтобы начать исследование.
#include <stdio.h>
#include <stdlib.h>
#include <DXGI.h>
int enumGraphicsAdapters( void* pFactory )
{
int rc = ERROR_SUCCESS;
HRESULT rcDx;
UINT i = 0;
IDXGIAdapter* pAdapter;
IDXGIFactory* localFactory = (IDXGIFactory*)pFactory;
DXGI_ADAPTER_DESC desc;
rcDx = localFactory->EnumAdapters(i, &pAdapter);
while( rcDx != DXGI_ERROR_NOT_FOUND )
{
if( S_OK == rcDx )
{
HRESULT rcGetDesc = pAdapter->GetDesc( &desc );
if( SUCCEEDED( rcGetDesc ) )
{
wprintf(TEXT("Adapter %d: [%s]\n"), i, desc.Description);
}
}
else
{
wprintf(TEXT("No more adapters\n"));
}
i++;
rcDx = localFactory->EnumAdapters(i, &pAdapter);
}
return rc;
}
int initDx( void )
{
int rc = (-1);
IDXGIFactory* pFactory;
HRESULT rcDx = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&pFactory);
if( SUCCEEDED( rcDx ) )
{
printf("Succedded creating DXGIFactory!\n");
rc = enumGraphicsAdapters( pFactory );
getchar();
rc = ERROR_SUCCESS;
}
if( pFactory )
{
pFactory->Release();
}
return rc;
}
int main( int argc, char* argv[] )
{
(void)initDx();
return EXIT_SUCCESS;
}
Теперь диспетчер устройств отображается правильно. Смотрите изображение.
Но мой собственный код не определяет графический адаптер AMD Radeon. Смотрите изображение.
Может кто-нибудь объяснить мне, почему это происходит?
Спасибо!