首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX11监视器句柄

DirectX11监视器句柄
EN

Stack Overflow用户
提问于 2014-09-22 15:48:01
回答 1查看 1K关注 0票数 1

我正在将一些遗留代码从Dx9移植到Dx11。我已经成功地完成了D3D设备和上下文的创建,但是有一段遗留代码需要维护,我无法完全解决如何将其移植到Dx11上。

所讨论的代码使用Win32函数来获取监视器的句柄,如下所示:

代码语言:javascript
复制
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设备的适配器监视器,并查找匹配的句柄:

代码语言:javascript
复制
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中检索监视器句柄的任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-22 17:26:15

可以使用IDXGIFactory::EnumAdapters枚举每个适配器,使用IDXGIAdapter::EnumOutputs枚举每个适配器的输出。然后调用IDXGIOutput::GetDesc以获得包含输出的HMONITOR句柄的DXGI_OUTPUT_DESC结构。

您可以在GDI示例代码中跳过一两步,方法是查找具有相同桌面坐标或设备名称的输出。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25978138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档