Ok, well the order here is crucial. It's important (for some GL drivers) that we do a glClear at the beginning of each frame, as it tends to be a hint to drivers that they can throw away any current buffers. It's also very important to delay this, since if you draw then clear, you're often waiting an entire vsync while that glClear blocks while waiting for a free buffer. Timing tests shows that this makes a drastic difference in our render loop.

So, I suppose we might need a new ClearScene() function in the SceneGraph that mimics glClear(color), which will add it in the pipeline for later. Would that suffice?