I want a nice animated splash screen for my Windows application.
The opening screen is a menu bar over the window where a 3D model created with Blender slowly rotates. This screen will be open, in the background, while the application runs.
The Simple Question:
Right now the user’s only interaction with the application is with the menu bar, and menus that drop down over the model’s window.
I’m not shy about spawning a thread, but there’s a general rule to keep all GUI stuff in one thread.
Would you consider the window with the rotating model part of the GUI? Or can I safely have a game loop in it’s own thread rotating the model while the main thread handles the “real” GUI?
The Complicated Question
What if I want to allow the user to fly around the splash screen with WASD keys and the mouse?
Flying around the model would be an amusing distraction, the business of the application is in the many dialogs accessible through the menus.
While they were flying around the model I’d lock the mouse to OpenGL’s window, allowing them to get back to the application with an escape key.
Could I safely run this through the game loop in another thread?