Скажем, я создаю игру OpenGL на С++, у которой будет много объектов (врагов, персонажей игроков, предметов и т.д.). Мне интересно, как их организовать, поскольку они будут созданы и уничтожены в реальном времени на основе времени, позиции игрока/действий и т.д.
Вот что я думал до сих пор: Я могу иметь глобальный массив для хранения указателей на эти объекты. Текстуры/контекст для этих объектов загружаются в их конструкторы. Эти объекты будут иметь разные типы, поэтому я могу указать указатели, чтобы получить их в массиве, но позже я хочу иметь функцию renderObjects(), которая будет использовать цикл для вызова функции ObjectN.render() для каждого существующего объекта.
Я думаю, что я пробовал это раньше, но я не знал, для какого типа инициализировать массив, поэтому я выбрал произвольный тип объекта, а затем применил все, что не было такого типа. Если я помню, это не сработало, потому что компилятор не хотел, чтобы я разыменовал указатели, если он уже не знал их тип, даже если заданная функция-член имеет одно и то же имя: (* Object5).render() < - не работает?
Есть ли лучший способ? Как в коммерческих играх, как HL2 справиться с этим? Я предполагаю, что должен быть какой-то модуль и т.д., Который отслеживает все объекты.