aboutsummaryrefslogtreecommitdiff
path: root/09-september/tomcat/renderer/window.c
blob: d5db1eb9b6f5cf69da2c1923dc160ab5a32a3ff7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#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);
}