#pragma once #include "stdafx.h" #include "vec2.h" #include "FPS.h" using namespace egm; // TODO: Close without rendering next frame. class Application { public: Application(const char* class_name, HINSTANCE h_instance); virtual ~Application(); int run(); protected: // Called on initialization of the application (called by base_init) virtual void init() = 0; virtual void update(float delta_time, clock_t clock) = 0; virtual void render() = 0; // Called on closing of the application (called before base_close) virtual void close(); // The size of the window ivec2 m_client_size; // The GLFWwindow that is used by this application GLFWwindow* m_p_window; // The FPS counter of this application FPS m_fps; private: void base_init(); void base_close(); };