devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻

Как рисовать в двух окнах в OpenGL?

Пишу игровой движок. Структура примерно следующая: есть класс Core, объект которого создаётся в начале программы, к нему подсоединяются модули(наследники класса Module), у модулей есть Worker'ы, которые можно зарегистрировать в Core для периодической обработки. Модули все равноправны, но Worker'ы делятся на обычные(могут обладать приоритетом и некоторыми другими настройками, которые сейчас не имеют особого значения) и графические, сделано это для организации игрового цикла, чтобы сначала обрабатывались Worker'ы с физикой игровой логикой и т.д., а уже после - графические и всё это в цикле.

Так вот, набросал графический модуль GLFWOpenGLModule, который, как видно из названия, использует OpenGL и библиотеку GLFW для создания окна и рисования на нём, но GLFW сделан так, что он не умеет в два окна сразу(может быть я плохо искал, но не нашёл, как сделать это).
Можно сделать класс GLFWOpenGLModule синглтоном, например так:
static int objectsCount = 0;
objectsCount++;
if (objectsCount > 1)
   throw SomeKindOfException("error message");

в конструкторе.
Но тогда невозможно создать 2 окна, что может стать проблемой при расширении, например, когда надо будет сделать, чтоб каждое из окон показывало вид из своей камеры.
Как грамотнее выйти из данной ситуации? Может нужно использовать какую-нибудь другую библиотеку для создания окна или и вовсе писать вручную под каждую платформу?
  • Вопрос задан
  • 616 просмотров
Решения вопроса 1
devalone
@devalone Автор вопроса
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Нашёл функцию glfwMakeContextCurrent, она позволяет указать, в каком окне рисовать. А модули всё таки сделаю сигнлтонами и за создание нескольких окон и их привязку к камерам будет отвечать один модуль.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы