Windows 二次显示上的OpenGL

Windows 二次显示上的OpenGL,windows,opengl,Windows,Opengl,我有一个Windows7系统,一个普通的显示器作为主显示器作为桌面,等等,还有一个附加的屏幕连接到同一个图形卡上。 我想写一个程序,控制二次显示,并将其用于全屏OpenGL渲染。我尝试使用EnumDisplaySettings枚举显示器,选择辅助显示器,创建与显示器关联的设备上下文,在DC上设置像素格式,并创建与其关联的WGL上下文。我可以在没有错误的情况下完成这一步,但是调用wglMakeCurrent失败了,没有明显的原因返回值为0,GetLastError为0,OpenGL不起作用 我能让

我有一个Windows7系统,一个普通的显示器作为主显示器作为桌面,等等,还有一个附加的屏幕连接到同一个图形卡上。 我想写一个程序,控制二次显示,并将其用于全屏OpenGL渲染。我尝试使用EnumDisplaySettings枚举显示器,选择辅助显示器,创建与显示器关联的设备上下文,在DC上设置像素格式,并创建与其关联的WGL上下文。我可以在没有错误的情况下完成这一步,但是调用wglMakeCurrent失败了,没有明显的原因返回值为0,GetLastError为0,OpenGL不起作用

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

更一般地说,为了让OpenGL在显示器上工作,我需要1将显示器连接到桌面还是桌面?和/或2在该显示器上有我自己的窗口


顺便说一句,我似乎可以让它与第三方库(如glfw3)一起工作,但我不想要额外的负担,我不需要glfw3 90%的功能,如果可能的话,我更愿意直接通过本机API调用来实现这一点。

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

正确,Windows的“显示控制面板”需要将其他监视器设置为将桌面扩展到此显示器,以便在其上显示不同的内容,而不是复制主屏幕上的内容。