X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_render.pas;h=668fb901f4e850dcd843a09ce3342daaecdccda2;hp=9f8b754e4e494424548e5685c57fc6df9b147598;hb=f8c006bbcbec547e9a3beda8372076a10ed049ae;hpb=1b91259cc2544a3e3dd76adb5e8f8ef0879fc199 diff --git a/src/game/opengl/r_render.pas b/src/game/opengl/r_render.pas index 9f8b754..668fb90 100644 --- a/src/game/opengl/r_render.pas +++ b/src/game/opengl/r_render.pas @@ -19,10 +19,11 @@ interface procedure r_Render_Initialize; procedure r_Render_Finalize; + procedure r_Render_Resize (w, h: Integer); implementation - uses SysUtils, Classes, g_system, g_game, g_options, r_window, r_graphics, r_console, r_playermodel; + uses SysUtils, Classes, e_log, g_system, g_game, g_options, r_window, r_graphics, r_console, r_playermodel; procedure r_Render_Initialize; begin @@ -40,4 +41,29 @@ implementation e_ReleaseEngine end; + procedure r_Render_Resize (w, h: Integer); + begin + gWinSizeX := w; + gWinSizeY := h; + gRC_Width := w; + gRC_Height := h; + if glRenderToFBO then + begin + // store real window size in gWinSize, downscale resolution now + w := round(w / r_pixel_scale); + h := round(h / r_pixel_scale); + if not e_ResizeFramebuffer(w, h) then + begin + e_LogWriteln('GL: could not create framebuffer, falling back to --no-fbo'); + glRenderToFBO := False; + w := gWinSizeX; + h := gWinSizeY; + end; + end; + gScreenWidth := w; + gScreenHeight := h; + e_ResizeWindow(w, h); + e_InitGL + end; + end.