Как выполнить рендеринг в несколько окон, используя один контекст OpenGL? - PullRequest
0 голосов
/ 20 мая 2018

Я создал два окна, используя GLFW.Первое окно имеет контекст OpenGL, а второе - нет.Я хочу сделать одну и ту же сцену в обоих окнах, используя один контекст OpenGL.Примерно так.

glBindVertexArray(vaoId);

// ... tell OpenGL to draw on first window

glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(...);

// ... swap first window buffers

// ... tell OpenGL to draw on second window

glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(...);

// ... swap second window buffers

glBindVertexArray(0);

Проблема в том, что я не знаю, как сказать OpenGL рисовать в определенном окне.И я также не знаю, как поменять буферы для конкретного окна.Если это необходимо, я могу использовать Win32 API.

1 Ответ

0 голосов
/ 20 мая 2018

Насколько я знаю, GLFW напрямую не поддерживает это в своем API.Обычно он рассматривает окно и контекст GL как единое целое.Однако с нативными API вы можете делать то, что хотите.Для окон 32 в partiuclar, посмотрите на wglMakeCurrent().В GLFW вы можете получить требуемые дескрипторы контекста и окна через API доступа GLFW .Обратите внимание, что вы получите HWND только так, вам придется вручную использовать GetDC() для получения контекста устройства окна.

Помните, что переключение контекстов подразумеваеточистка очереди команд GL, что может отрицательно сказаться на производительности.См. GL_KHR_context_flush_control для получения более подробной информации.

...