Written by Matthew Fisher

The App class glues the operating system, the graphics device, the application interface,
and the window manager together.  It is essentially the first and the last code that is executed.

struct AppState
    GraphicsDevice*    graphics;
    FrameTimer         timer;
    Vec2i              dimensions;
    ApplicationWindow  window;
    InputManager       input;

class App
    void FreeMemory();
    void Init(HINSTANCE hInstance, int nCmdShow);
    void MessageLoop(HINSTANCE hInstance, int nCmdShow);

    void RenderFrame();

    AppState    _state;

    Controller* _controller;