aboutsummaryrefslogtreecommitdiff
#include "window.h"
#include "../util/util.h"
#include <stdlib.h>

Window* window_new(const char* title, Uint32 width, Uint32 height)
{
    Window* window = malloc(sizeof(Window));
    window->title = title;
    window->Width = width;
    window->Height = height;

    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    //SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
    //SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);

    window->window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                      width, height, SDL_WINDOW_OPENGL);
    if(window->window == NULL)
        Util_FatalError( "The window could not be created:\n%s", SDL_GetError() );

    window->context = SDL_GL_CreateContext(window->window);

    if(window->context == NULL)
        Util_FatalError( "Context could not be created:\n%s", SDL_GetError() );

    glViewport(0, 0, width, height);

    return window;
}

void window_resize(Window* window, Uint32 width, Uint32 height)
{
    window->Width = width;
    window->Height = height;
    SDL_SetWindowSize(window->window, width, height);
    glViewport(0, 0, width, height);
}

void window_update(Window* window)
{
    SDL_GL_SwapWindow(window->window);
}

void window_destroy(Window* window)
{
    SDL_GL_DeleteContext(window->context);
    SDL_DestroyWindow(window->window);
    free(window);
}