辅助显示器上的OpenGL

时间:2015-02-13 03:01:04

标签: windows opengl

我有一个Windows 7系统,一个常规显示器作为主显示器(用作桌面等),另一个屏幕连接到同一个显卡。 我想编写一个控制辅助显示的程序,并将其用于全屏OpenGL渲染。我尝试使用EnumDisplaySettings枚举显示,选择辅助显示,创建与显示关联的设备上下文,在DC上设置像素格式,并创建与其关联的WGL上下文。我可以毫无错误地得到这个,但是之后对wglMakeCurrent的调用失败没有明显的原因(返回值为0,GetLastError()为0,并且OpenGL不起作用。)

我能让它工作的唯一方法是将桌面扩展到辅助显示器(手动,从Windows显示设置),创建一个窗口并将其移动到辅助显示器上。这是可以容忍但不受欢迎的(我不希望辅助显示器干扰桌面。例如,在此设置中,我可以将鼠标光标从桌面移动到辅助显示器。)有没有办法避免此?

更一般地说,为了让OpenGL在显示器上工作,我是否需要(1)将显示器连接到桌面(或者#34; a"桌面?)和/或(2)在该显示器上有一个我自己的窗口?

P.S。似乎我可以将它与第三方库(如glfw3)一起使用,但我不想要额外的行李(我不需要90%的glfw3功能)而且我&# 39;如果可能的话,我更愿意通过本机API调用直接完成。

1 个答案:

答案 0 :(得分:0)

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