X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_render.pas;h=668fb901f4e850dcd843a09ce3342daaecdccda2;hb=f8c006bbcbec547e9a3beda8372076a10ed049ae;hp=9f8b754e4e494424548e5685c57fc6df9b147598;hpb=fbb649f409620a55ae48f1bffd655c5a04489371;p=d2df-sdl.git 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.