Пишу игровой движок. Структура примерно следующая: есть класс Core, объект которого создаётся в начале программы, к нему подсоединяются модули(наследники класса Module), у модулей есть Worker'ы, которые можно зарегистрировать в Core для периодической обработки. Модули все равноправны, но Worker'ы делятся на обычные(могут обладать приоритетом и некоторыми другими настройками, которые сейчас не имеют особого значения) и графические, сделано это для организации игрового цикла, чтобы сначала обрабатывались Worker'ы с физикой игровой логикой и т.д., а уже после - графические и всё это в цикле.
Так вот, набросал графический модуль GLFWOpenGLModule, который, как видно из названия, использует OpenGL и библиотеку GLFW для создания окна и рисования на нём, но GLFW сделан так, что он не умеет в два окна сразу(может быть я плохо искал, но не нашёл, как сделать это).
Можно сделать класс GLFWOpenGLModule синглтоном, например так:
static int objectsCount = 0;
objectsCount++;
if (objectsCount > 1)
throw SomeKindOfException("error message");
в конструкторе.
Но тогда невозможно создать 2 окна, что может стать проблемой при расширении, например, когда надо будет сделать, чтоб каждое из окон показывало вид из своей камеры.
Как грамотнее выйти из данной ситуации? Может нужно использовать какую-нибудь другую библиотеку для создания окна или и вовсе писать вручную под каждую платформу?