如何同时在不同的显示器上显示四个 windows(全屏模式,OpenGL 渲染)?

How to show four windows (full screen mode, OpenGL render) each on different monitor at the same time?

  1. 创建 window1 并渲染我想要共享到 window2、window3、window4[=13= 的纹理]

  2. 所有 windows 都处于全屏模式。

  3. 不同显示器显示,如下图

  4. 需要同步(一个线程,四个 opengl 上下文,四个 FBO,一个渲染纹理)

    监视器1 监视器2 监视器3 监视器4
    -------------- ---------- ------------ ----------
    | window1 | | window2 | | window3 | | window4 |
    -------------- ---------- ------------ ----------

我尝试使用 glfw 示例 sharing.c 并像这样创建 window1

int count;
GLFWmonitor** monitors = glfwGetMonitors(&count);
printf("Monitor count: %d\n", count);           

// Open a window and create its OpenGL context
window1 = glfwCreateWindow( g_dispWidth, g_dispHeight, "circle mask", monitors[0], NULL);

这将在监视器[0]上显示全屏 window,但是当我使用两个 windows 时,我只能显示一个 window (window1)在监视器 1 上如果我选择在监视器 2 上显示另一个 window (window2),window1 将隐藏。

最简单的方法是让一个 window 跨越 4 个显示器。

然后您可以在一个上下文中使用 4 个视口在不同的显示器上渲染图像。

除非您有多个图形适配器,否则这应该很有效。

看起来像(未经测试):

glfwWindowHint(GLFW_DECORATED, 0);
GLFWwindow* w = glfwCreateWindow(3840, 2160, "window1", NULL, NULL);
glfwSetWindowPos(w, 0, 0);