What I do: Start main loop, Render a loading screen image to the screen, load resources, This could take a while so the engine is unable to render as it is loading and after this you just render you thing to the screen (menu, game, etc)

...State machine would be better...