多设备(多显示器)下的OpenGL上下文

5
在OpenGL中,当我创建一个窗口时,我会隐式地使用类似GLUT的东西创建一个图形上下文。假设我将我的窗口拖到由另一个显卡驱动的监视器中(例如,一个是嵌入式英特尔显卡,另一个是Nvidia)。谁来渲染窗口?也就是说,每种情况下哪个设备运行图形管线。
似乎glGetString(GL_RENDERER)总是返回主显示器(GLUT窗口创建的位置),即使我将窗口完全拖到其中一个窗口中。 (我猜这都是由主要设备完成的...)有人可以帮助我理解吗?

enter image description here

注意,在使用Windows 10、GLUT和OpenGL时,我提出的问题是一般性的,不会受到这些特定情况的影响。

你是在谈论 Nvidia 的 Optimus 没有生效的一般情况吗? - genpfault
请参考此处相关内容:https://dev59.com/4VvUa4cB1Zd3GeqPvJgP - Ripi2
1个回答

0

GL对窗口一无所知,只了解上下文。GL在当前上下文中渲染到帧缓冲区。

您可以编写一种方法来询问操作系统窗口的位置,并使用两个上下文,根据操作系统的答案设置正确的上下文为当前上下文。


是的,我假设每个窗口都有一个上下文或者全局上下文(GLUT)。让我困惑的是,每个窗口可能有不同的分辨率等等... 所以任何图形上下文都必须能够在任何监视器(设备)上绘制。是这样吗? - Tim
您可以在显示设备上创建一个上下文。它的驱动程序在幕后管理演示。 - Robinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接