voxspatium/src/Application.cpp

103 lines
1.7 KiB
C++

#include "Application.h"
Application::Application()
{
}
Application::~Application()
{
}
void Application::Initialize()
{
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
std::cout << "Failed to init SDL\n";
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
return;
}
// Create our window centered at 1080x720 resolution
m_window = SDL_CreateWindow(
"Universium",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
1080,
720,
SDL_WINDOW_OPENGL
);
if (!m_window)
{
printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
return;
}
// Set GL Attributes
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GLContext glContext = SDL_GL_CreateContext(m_window);
if(glContext == NULL)
{
printf("OpenGL context could not be created! SDL Error: %s\n", SDL_GetError());
return;
}
// Initialize GLEW
glewInit();
// Run the engine
Run();
}
void Application::Run()
{
m_run = true;
while (m_run)
{
while(SDL_PollEvent(&m_event) != 0)
{
// Close button is pressed
if(m_event.type == SDL_QUIT)
{
m_run = false;
}
}
Render();
// Set background color as cornflower blue
glClearColor(0.39f, 0.58f, 0.93f, 1.f);
// Clear color buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Update window with OpenGL rendering
SDL_GL_SwapWindow(m_window);
}
//Destroy window
SDL_DestroyWindow(m_window);
m_window = NULL;
//Quit SDL subsystems
SDL_Quit();
}
void Application::Update(GLfloat dtime)
{
}
void Application::Render()
{
}