Я бы, вероятно, сделал это, просто имея какую-то структуру данных (массив, связанный список, что угодно), содержащую текущую «сцену». Изначально это пусто. Затем, когда событие происходит, вы создаете какое-то представление новой желаемой геометрии и добавляете это в список.
В каждом кадре вы очищаете экран и просматриваете структуру данных, отображая каждое представление в подходящий набор команд OpenGL. Это действительно стандарт.
Структура данных часто упоминается как граф сцены , часто в форме дерева или графа, где геометрия может иметь дочерние геометрии и т. Д.