#include "Application.h" #include "Exception.h" Application::Application(const char* class_name, HINSTANCE h_instance) : m_client_size(1280, 720) { base_init(); } Application::~Application() { } int Application::run() { try { init(); GLenum gl_err; while (!glfwWindowShouldClose(m_p_window)) { // Handle all messages glfwPollEvents(); float delta_time = m_fps.mark(); clock_t clock = m_fps.get_clock(); update(delta_time, clock); render(); gl_err = glGetError(); if (gl_err != GL_NO_ERROR) { throw EXCEPTION("Caught OpenGL Error: " + std::to_string(gl_err)); } glfwSwapBuffers(m_p_window); } return 0; } catch (Exception& e) { glfwTerminate(); throw e; } } void Application::close() { } void Application::base_init() { if (!glfwInit()) { throw EXCEPTION("Unable to Initialize GLFW"); } m_p_window = glfwCreateWindow(m_client_size.x, m_client_size.y, "OpenGLEngine", NULL, NULL); if (!m_p_window) { glfwTerminate(); throw EXCEPTION("Unable to Create GLFW Window"); } glfwMakeContextCurrent(m_p_window); glewExperimental = GL_TRUE; GLenum glew_err = glewInit(); if (glew_err != GLEW_OK) { glfwTerminate(); throw EXCEPTION("Unable to Initialize GLEW: " + std::string((char*)glewGetErrorString(glew_err))); } // Output Version Information OutputDebugString("\nOpenGL Version Information:\nRenderer: "); OutputDebugString((char*)glGetString(GL_RENDERER)); OutputDebugString("\nOpenGL Version: "); OutputDebugString((char*)glGetString(GL_VERSION)); OutputDebugString("\n\n"); m_fps.prepare(); } void Application::base_close() { close(); }