Самое простое это сделать иерархию и методы render() и update() этих объектов.
class object {
public:
object* mpParent;
std::vector< object* > mDescendants;
void mUpdate_r( void ) {
// TODO Update itself.
for ( auto x : mDescendants ) {
x.mUpdate_r();
}
}
void mRender_r( void ) {
// TODO Render itself.
for ( auto x : mDescendants ) {
x.mRender_r();
}
}
};
Таким образом можно выполнять все действия через корневой объект сцены.
sceneRoot.mUpdate_r();
sceneRoot.mRender_r();
Однако такой код -- далеко не самое эффективное решение с точки зрения производительности и гибкости и в более-менее серьезном проекте делают по другому.