#ifndef SPECTRE_PLATFORM_H #define SPECTRE_PLATFORM_H #include #include namespace sp { class Window; class GLContext; class PlatformWindow; class PlatformInput; class PlatformDisplay; class PlatformApplication : NonCopyable { public : static PlatformApplication* get(); virtual void init() = 0; virtual void shutdown() = 0; virtual PlatformWindow* createWindow(Window* window) = 0; virtual GLContext* createGLContext() = 0; virtual PlatformInput& getInput() = 0; MessageQueue& getMessageQueue(); protected : MessageQueue m_messageQueue; }; } // namespace sp #endif /* SPECTRE_PLATFORM_H */