如何同时在不同的显示器上显示四个 windows(全屏模式,OpenGL 渲染)?
How to show four windows (full screen mode, OpenGL render) each on different monitor at the same time?
创建 window1 并渲染我想要共享到 window2、window3、window4[=13= 的纹理]
所有 windows 都处于全屏模式。
不同显示器显示,如下图
需要同步(一个线程,四个 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);
创建 window1 并渲染我想要共享到 window2、window3、window4[=13= 的纹理]
所有 windows 都处于全屏模式。
不同显示器显示,如下图
需要同步(一个线程,四个 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);