diff options
Diffstat (limited to 'src/saffron_window.c')
| -rw-r--r-- | src/saffron_window.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/saffron_window.c b/src/saffron_window.c index 6c89c50..a909bc3 100644 --- a/src/saffron_window.c +++ b/src/saffron_window.c @@ -21,19 +21,30 @@ SaffronWindow* saffron_window_new(const char* title, int w, int h) { Uint32 flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_HIGH_PIXEL_DENSITY | SDL_WINDOW_OPENGL; window->sdl_window = SDL_CreateWindow(title, w, h, flags); + + SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengles2"); window->renderer = SDL_CreateRenderer(window->sdl_window, NULL); + + window->gl_context = SDL_GL_CreateContext(window->sdl_window); + SDL_GL_MakeCurrent(window->sdl_window, window->gl_context); + window->root->theme = SF_MACRO_DEFAULT_THEME; return window; } void saffron_window_free(SaffronWindow* window) { + SDL_GL_DestroyContext(window->gl_context); SDL_DestroyRenderer(window->renderer); SDL_DestroyWindow(window->sdl_window); saffron_widget_free(window->root); free(window); } +SDL_GLContext saffron_window_get_gl_context(SaffronWindow* window) { + return window->gl_context; +} + static void handle_mouse_down(SDL_Event* event, SaffronWindow* window) { if (event->type != SDL_EVENT_MOUSE_BUTTON_DOWN) return; @@ -93,6 +104,7 @@ void saffron_window_main(SaffronWindow *window) { SDL_SetRenderDrawColor(window->renderer, 0, 0, 0, 255); SDL_RenderClear(window->renderer); + SDL_GL_MakeCurrent(window->sdl_window, window->gl_context); // just in case! saffron_widget_draw(window->root, window->renderer); SDL_RenderPresent(window->renderer); |
