X-Git-Url: https://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fsdl2%2Fg_system.pas;h=89cebaf02b5e84d292118595e878a4a17e680f52;hp=694042c37dea2db0f756e690b4d14a00f63f16e7;hb=e452d337f0620b50d8d978b534437b2732134d8f;hpb=92655287ffab368ec7bf450fa3d82fb2328a7b99 diff --git a/src/game/sdl2/g_system.pas b/src/game/sdl2/g_system.pas index 694042c..89cebaf 100644 --- a/src/game/sdl2/g_system.pas +++ b/src/game/sdl2/g_system.pas @@ -78,10 +78,17 @@ implementation begin gWinSizeX := w; gWinSizeY := h; - gScreenWidth := w; - gScreenHeight := 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); + e_ResizeFramebuffer(w, h); + end; + gScreenWidth := w; + gScreenHeight := h; {$IFDEF ENABLE_HOLMES} fuiScrWdt := w; fuiScrHgt := h; @@ -151,6 +158,15 @@ implementation begin {$IFDEF NOGL_INIT} nogl_Init; + glRenderToFBO := False; // TODO: check for GL_OES_framebuffer_object + {$ELSE} + if glRenderToFBO then + if not Load_GL_ARB_framebuffer_object() then + if not Load_GL_EXT_framebuffer_object() then + begin + e_LogWriteln('SDL: no framebuffer support detected'); + glRenderToFBO := False + end; {$ENDIF} if (fullscreen = false) and (maximized = false) and (wc = false) then begin @@ -209,6 +225,8 @@ implementation procedure sys_Repaint; begin + if glRenderToFBO then + e_BlitFramebuffer(gWinSizeX, gWinSizeY); SDL_GL_SwapWindow(window) end;