Как показать четыре окна (полноэкранный режим, рендер OpenGL), каждое на разных мониторах одновременно? - PullRequest
0 голосов
/ 08 мая 2019
  1. Создайте window1 и визуализируйте текстуру, которой я хочу поделиться с window2, window3, window4
  2. Все окна в полноэкранном режиме.
  3. Отображение на другом мониторе, как показано на схеме ниже.
  4. Нужна синхронизация (один поток, четыре контекста opengl, четыре FBO, одна текстура рендеринга)

    Monitor1 & emsp; & ensp; Monitor2 & emsp; & ensp; Monitor3 & emsp; Monitor4
    -------------- & ensp; ------------ & ensp; ----------- & emsp; -----------
    | window1 | & ensp; | Window2 | | window3 | | window4 |
    -------------- & ensp; ------------ & ensp; ----------- & emsp; -----------

Я попытался использовать пример glfw shared.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], но когда я использую два окна, я могу показать только одно окно (окно1) на мониторе1. Если я выберу показ другого окна (окна 2) на мониторе 2, окно 1 будет скрыто.

1 Ответ

0 голосов
/ 10 мая 2019

Проще всего было бы иметь одно окно, охватывающее 4 монитора.

Затем можно использовать 4 видовых экрана в одном контексте для визуализации изображений на разных мониторах.

Это должнобыть эффективным, если у вас нет нескольких графических адаптеров.

Это будет выглядеть (не проверено):

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