2014-09-22 2 views
0

В настоящее время я переношу некоторый унаследованный код от Dx9 до Dx11. Я немного новичок с материалом DirectX, поэтому, пожалуйста, со мной. Мне удалось перенести создание D3D-устройства и контекста, но есть часть устаревшего кода, который должен поддерживаться, и я не могу понять, как его перенести на Dx11.Ручки монитора DirectX11

Код в вопросе использует функции Win32 для того, чтобы завладеть Ручка монитора так:

DEVMODE dm = { 0 }; 
dm.dmSize = sizeof(DEVMODE); 
EnumDisplaySettings("\\\\.\\DISPLAY3", ENUM_CURRENT_SETTINGS, &dm); 

POINT p = { dm.dmPosition.x, dm.dmPosition.y }; 
HMONITOR hMonitorGDI = MonitorFromPoint(p, MONITOR_DEFAULTTONEAREST); 

Затем петли через адаптер мониторов, подключенных к D3D9 устройства, как так и выглядит для согласования ручки:

unsigned int uiAdapterCount = m_p_d3d9->GetAdapterCount(); 
for (unsigned int i = 0; i < uiAdapterCount; ++i) { 
    HMONITOR hMonitorD3D = m_p_d3d9->GetAdapterMonitor(i); 
    if (hMonitorD3D == hMonitorGDI) 
    { 
     p_is->uiAdapter = i; 
     break; 
    } 
} 

Я не могу из-за любви ко мне разобраться, как сделать эквивалент в Dx11. Я узнал, как создать DXGIFactory, и через это получить информацию о адаптере и выходе (мониторе), но, похоже, я ничего не могу найти в отношении получения дескриптора монитора в Dx11.

Любая помощь или указатели в правильном направлении были бы высоко оценены. Cheers

ответ

2

Вы можете использовать IDXGIFactory::EnumAdapters для перечисления каждого адаптера и IDXGIAdapter::EnumOutputs для перечисления выходов каждого адаптера. Затем позвоните IDXGIOutput::GetDesc, чтобы получить структуру DXGI_OUTPUT_DESC, которая включает в себя маркер HMONITOR для вывода.

Возможно, вы можете пропустить шаг или два в вашем примере кода GDI, ища выход с теми же координатами рабочего стола или, возможно, именем устройства.

+0

Не могу поверить, что я выполнил все эти шаги, прежде чем задавать этот вопрос и пропустил переменную Monitor. Какой тупик. Приветствия за это, работает как шарм :) – TheRarebit

Смежные вопросы