b494f68d0c
Now using GLFW3 instead of the custom window class. This library looks like it will make development much simpler and will make it so that I am less worried about my windows code breaking. Currently setup the http://antongerdelan.net/opengl/hellotriangle.html tutorial in the MySimpleScene. Will probably create another scene file to try to get the object oriented stuff working.
87 lines
1.6 KiB
C++
87 lines
1.6 KiB
C++
#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();
|
|
}
|