Я переношу устаревший код с Dx9 на Dx11. Мне удалось перенести создание устройства D3D и контекста в порядке, но есть часть устаревшего кода, который необходимо поддерживать, и я не могу понять, как перенести его на Dx11.
Рассматриваемый код использует функции 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.