【发布时间】:2015-02-13 03:01:03
【问题描述】:
我有一个 Windows 7 系统,一个普通显示器作为主显示器(用作桌面等),还有一个附加屏幕连接到同一个图形卡。 我想编写一个程序来控制辅助显示器并将其用于全屏 OpenGL 渲染。我尝试使用 EnumDisplaySettings 枚举显示器,选择辅助显示器,创建与显示器关联的设备上下文,在 DC 上设置像素格式,并创建与其关联的 WGL 上下文。我可以做到这一点而没有错误,但是对 wglMakeCurrent 的调用无缘无故失败(返回值为 0,GetLastError() 为 0,OpenGL 不起作用。)
我可以让它工作的唯一方法是将桌面扩展到辅助显示器(手动,从 Windows 显示设置),创建一个窗口并将其移动到辅助显示器上。这是可以容忍但不可取的(我不希望辅助显示器干扰桌面。例如,在此设置中,我可以将鼠标光标从桌面移动到辅助显示器。)有没有办法避免这种情况?
更一般地说,为了让 OpenGL 在显示器上工作,我是否需要 (1) 将显示器连接到桌面(或“一个”桌面?),和/或 (2) 有一个窗口在那个显示器上是我自己的?
附:似乎我可以让它与第三方库(如 glfw3)一起使用,但我不想要额外的包袱(我不需要 glfw3 的 90% 的功能),我更愿意得到如果可能,这直接通过本机 API 调用完成。
【问题讨论】:
-
正确,Windows 的显示控制面板需要将您的其他显示器设置为“将桌面扩展到此显示器”,以便在其上显示不同的内容,而不是复制主显示器上的内容。