#ifndef OUR_DICK_RENDER_HPP #define OUR_DICK_RENDER_HPP #include #include #define OPENGL_VERSION 400 #define GLSL_VERSION 400 class GLFWwindow; class render_manager { private: using close_callback = void(*)(void); using input_callback = void(*)(GLFWwindow*, int, int, int, int); close_callback m_window_close_callback; input_callback m_input_handler; GLFWwindow* m_main_window; public: enum renderer_error{ RENDERER_OK, RENDERER_CONTEXT_ERROR, RENDERER_WINDOW_ERROR, RENDERER_INIT_ERROR, }; render_manager(const render_manager&) = delete; render_manager(render_manager&&) = delete; render_manager(); renderer_error init(int width, int height, const char* title); // Sets up the OpenGL environment void update(); // Update the GL context and draw new frame void request_exit(); void handle_window_close_event(close_callback handle){ m_window_close_callback = handle; } void handle_keypress_event(input_callback handle){ m_input_handler = handle; glfwSetKeyCallback(m_main_window, m_input_handler); } }; #endif