【问题标题】:OpenGL on a secondary display辅助显示器上的 OpenGL
【发布时间】: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 的显示控制面板需要将您的其他显示器设置为“将桌面扩展到此显示器”,以便在其上显示不同的内容,而不是复制主显示器上的内容。

标签: windows opengl


【解决方案1】:

不幸的是,Windows 图形驱动程序模型不允许独立使用显示器。您必须将桌面扩展到第二个显示器并在其上创建一个全屏窗口。当涉及到约束鼠标时,通常的方法是挂钩系统鼠标事件,每当鼠标指针移动到辅助屏幕时,将其移回主屏幕。

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多