mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-09-09 05:46:00 +00:00
fixed SDL2 (with GLEW) on Windows
This commit is contained in:
@@ -172,6 +172,8 @@ EX SDL_Renderer *s_renderer, *s_software_renderer;
|
||||
#endif
|
||||
EX SDL_Texture *s_texture;
|
||||
EX SDL_Window *s_window;
|
||||
EX SDL_GLContext s_context;
|
||||
EX bool s_have_context;
|
||||
#endif
|
||||
|
||||
EX color_t qpixel_pixel_outside;
|
||||
@@ -1148,6 +1150,9 @@ EX void close_renderer() {
|
||||
EX void close_window() {
|
||||
#if CAP_SDL2
|
||||
close_renderer();
|
||||
if(s_have_context) {
|
||||
SDL_GL_DeleteContext(s_context), s_have_context = false;
|
||||
}
|
||||
if(s_window) SDL_DestroyWindow(s_window), s_window = nullptr;
|
||||
#endif
|
||||
}
|
||||
@@ -1277,8 +1282,13 @@ EX void setvideomode() {
|
||||
|
||||
auto create_win = [&] {
|
||||
#if CAP_SDL2
|
||||
if(s_window && current_window_flags != (flags | sizeflag))
|
||||
if(s_window && current_window_flags != (flags | sizeflag)) {
|
||||
if(s_have_context) {
|
||||
SDL_GL_DeleteContext(s_context), s_have_context = false;
|
||||
glhr::glew = false;
|
||||
}
|
||||
SDL_DestroyWindow(s_window), s_window = nullptr;
|
||||
}
|
||||
if(s_window)
|
||||
SDL_SetWindowSize(s_window, vid.xres, vid.yres);
|
||||
else
|
||||
@@ -1315,6 +1325,7 @@ EX void setvideomode() {
|
||||
}
|
||||
|
||||
#if CAP_SDL2
|
||||
if(s_renderer) SDL_DestroyRenderer(s_renderer), s_renderer = nullptr;
|
||||
s_renderer = SDL_CreateRenderer(s_window, -1, vid.current_vsync ? SDL_RENDERER_PRESENTVSYNC : 0);
|
||||
SDL_GetRendererOutputSize(s_renderer, &vid.xres, &vid.yres);
|
||||
|
||||
@@ -1341,6 +1352,12 @@ EX void setvideomode() {
|
||||
glDisable(GL_MULTISAMPLE_ARB);
|
||||
}
|
||||
|
||||
#if CAP_SDL2
|
||||
if(s_have_context) SDL_GL_DeleteContext(s_context), s_have_context = false;
|
||||
if(!s_have_context) s_context = SDL_GL_CreateContext(s_window);
|
||||
s_have_context = true; glhr::glew = false;
|
||||
#endif
|
||||
|
||||
glViewport(0, 0, vid.xres, vid.yres);
|
||||
glhr::init();
|
||||
resetGL();
|
||||
|
Reference in New Issue
Block a user