X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fopengl%2Fr_render.pas;h=483bd53282af43d03cbeb2e5f53331f2404ebb1b;hp=668fb901f4e850dcd843a09ce3342daaecdccda2;hb=2d08438ad214136a161af303cc896e0d5ff706b8;hpb=f8c006bbcbec547e9a3beda8372076a10ed049ae diff --git a/src/game/opengl/r_render.pas b/src/game/opengl/r_render.pas index 668fb90..483bd53 100644 --- a/src/game/opengl/r_render.pas +++ b/src/game/opengl/r_render.pas @@ -23,13 +23,54 @@ interface implementation - uses SysUtils, Classes, e_log, g_system, g_game, g_options, r_window, r_graphics, r_console, r_playermodel; + uses + {$INCLUDE ../../nogl/noGLuses.inc} + SysUtils, Classes, + e_log, g_system, + g_game, g_options, r_window, r_graphics, r_console, r_playermodel + ; + + var + LoadedGL: Boolean = false; + + procedure LoadGL; + begin + if LoadedGL = false then + begin + {$IFDEF NOGL_INIT} + nogl_Init; + if glRenderToFBO and (not nogl_ExtensionSupported('GL_OES_framebuffer_object')) then + begin + e_LogWriteln('GL: framebuffer objects not supported; disabling FBO rendering'); + glRenderToFBO := false + end; + {$ELSE} + if glRenderToFBO and (not Load_GL_ARB_framebuffer_object) then + begin + e_LogWriteln('GL: framebuffer objects not supported; disabling FBO rendering'); + glRenderToFBO := false + end; + {$ENDIF} + LoadedGL := true + end + end; + + procedure FreeGL; + begin + if LoadedGL = true then + begin + {$IFDEF NOGL_INIT} + nogl_Quit + {$ENDIF} + LoadedGL := false + end + end; procedure r_Render_Initialize; begin if sys_SetDisplayMode(gRC_Width, gRC_Height, gBPP, gRC_FullScreen, gRC_Maximized) = False then raise Exception.Create('Failed to set videomode on startup.'); - + LoadGL; r_Window_Initialize; r_Console_Init; r_PlayerModel_Initialize; @@ -37,12 +78,14 @@ implementation procedure r_Render_Finalize; begin + FreeGL; r_PlayerModel_Finalize; e_ReleaseEngine end; procedure r_Render_Resize (w, h: Integer); begin + LoadGL; gWinSizeX := w; gWinSizeY := h; gRC_Width := w;