Consider this:
Truth: I need to load a bunch of textures up at the start of a level. This takes a very long time.
Truth: I want to draw a progress bar using some textures that have already been loaded.
Truth: In order for progress to be displayed in real loading time, the first and second truths must happen in different threads.
Truth: All OpenGL calls must be done in the same thread that the OpenGL context was set.
Paradox: I must perform OpenGL calls in two separate threads simultaneously, or I need to somehow pause the loading in order to update the loading bar.
Question: Ideas on how to do this? These must be fast ideas. Repainting the entire loading bar every time something changes is not really an option. Switching contexts around is not an option. Having two contexts is not an option.