Ciclo de vida para objetos UI

Atualmente estou desenvolvendo recursos de interface de usuário usando OpenGL. A forma inicial como estruturei todo código fonte baseia-se em antes de acessar o game loop(funções de renderização, processamento de eventos…) defino os recursos UI de forma que eles estarão lá, independente de estarem visíveis para o usuário, e isso me parece errado semanticamente. Seria ideal construir objetos UI sempre que determinado evento (por exemplo um botão que invoca o menu) ocorre e destrui-los assim que fosse desejado encerrar a janela(ou qualquer outro recurso de interface de usuário)? Não estou bem certo quanto a isso.