Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不同的监视器上同时显示四个窗口(全屏模式、OpenGL渲染)?_Opengl_Glfw - Fatal编程技术网

如何在不同的监视器上同时显示四个窗口(全屏模式、OpenGL渲染)?

如何在不同的监视器上同时显示四个窗口(全屏模式、OpenGL渲染)?,opengl,glfw,Opengl,Glfw,创建window1并渲染要共享到window2、window3、window4的纹理 所有窗口都处于全屏模式 在不同的显示器上显示,如下图所示 需要同步(一个线程、四个opengl上下文、四个FBO、一个渲染纹理) 监视器1  监视器2   监视器3  监视器4 --------------   ------------   -----------   ----------- |窗口1| | 窗口2 | |窗口3 | |窗口4 | --------------   ------------

创建window1并渲染要共享到window2、window3、window4的纹理

  • 所有窗口都处于全屏模式

  • 在不同的显示器上显示,如下图所示

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

    监视器1  监视器2   监视器3  监视器4
    --------------   ------------   -----------   -----------
    |窗口1| | 窗口2 | |窗口3 | |窗口4 |
    --------------   ------------   -----------   -----------

  • 我尝试使用glfw示例并创建如下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]上显示全屏窗口,但当我使用两个窗口时,我只能在监视器1上显示一个窗口(窗口1)。如果我选择在监视器2上显示另一个窗口(窗口2),窗口1将隐藏。

    最简单的方法是在4个监视器上有一个窗口

    然后,可以在单个上下文中使用4个视口在不同的监视器上渲染图像

    这应该是有效的,除非您有多个图形适配器

    这看起来像(未经测试):


    最简单的方法是在4个监视器上设置一个窗口

    然后,可以在单个上下文中使用4个视口在不同的监视器上渲染图像

    这应该是有效的,除非您有多个图形适配器

    这看起来像(未经测试):


    我转而使用SDL<代码>m_window=SDL_CreateWindow(“window1”,0,0,3840,2160,SDL_window_OPENGL | SDL_window_无边框)这将像我预期的那样工作。但我仍然不知道如何使用glfw。@我添加了一个未经测试的示例,最好您参考glfw全面的文档:它仍然只在一个监视器上呈现。我使用xrandr,就像它工作一样。很抱歉,我无法进一步帮您,因为我现在正在休假,如果您使用最新代码更新您的问题,并将其标记为未应答,有人可以从这里接收它?我转而使用SDL<代码>m_window=SDL_CreateWindow(“window1”,0,0,3840,2160,SDL_window_OPENGL | SDL_window_无边框)这将像我预期的那样工作。但我仍然不知道如何使用glfw。@我添加了一个未经测试的示例,最好您参考glfw全面的文档:它仍然只在一个监视器上呈现。我使用xrandr,就像它工作一样。很抱歉,我无法进一步帮您,因为我现在正在休假,如果您使用最新代码更新您的问题,并将其标记为未答复,有人可以从这里接收吗?
    glfwWindowHint(GLFW_DECORATED, 0);
    GLFWwindow* w = glfwCreateWindow(3840, 2160, "window1", NULL, NULL);
    glfwSetWindowPos(w, 0, 0);