Add r_fullscreenDesktop CVar for "desktop"/windowed fullscreen mode

.. that doesn't switch the display resolution, but creates a borderless
fullscreen window at current desktop resolution.
SDL2-only (SDL_WINDOW_FULLSCREEN_DESKTOP).

Doing this with an additional CVar instead of r_fullscreen 2 or similar
has the advantage that it works properly with Alt-Enter
This commit is contained in:
Daniel Gibson 2021-01-15 17:14:17 +01:00
parent d1b0073582
commit 9a83b3def4
3 changed files with 11 additions and 2 deletions

View file

@ -59,6 +59,7 @@ idCVar r_multiSamples( "r_multiSamples", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVA
idCVar r_mode( "r_mode", "5", CVAR_ARCHIVE | CVAR_RENDERER | CVAR_INTEGER, "video mode number" );
idCVar r_displayRefresh( "r_displayRefresh", "0", CVAR_RENDERER | CVAR_INTEGER | CVAR_NOCHEAT, "optional display refresh rate option for vid mode", 0.0f, 200.0f );
idCVar r_fullscreen( "r_fullscreen", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_BOOL, "0 = windowed, 1 = full screen" );
idCVar r_fullscreenDesktop( "r_fullscreenDesktop", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_BOOL, "0: 'real' fullscreen mode 1: keep resolution 'desktop' fullscreen mode" );
idCVar r_customWidth( "r_customWidth", "720", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_INTEGER, "custom screen width. set r_mode to -1 to activate" );
idCVar r_customHeight( "r_customHeight", "486", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_INTEGER, "custom screen height. set r_mode to -1 to activate" );
idCVar r_singleTriangle( "r_singleTriangle", "0", CVAR_RENDERER | CVAR_BOOL, "only draw a single triangle per primitive" );

View file

@ -814,6 +814,7 @@ extern glconfig_t glConfig; // outside of TR since it shouldn't be cleared du
extern idCVar r_mode; // video mode number
extern idCVar r_displayRefresh; // optional display refresh rate option for vid mode
extern idCVar r_fullscreen; // 0 = windowed, 1 = full screen
extern idCVar r_fullscreenDesktop; // 0: 'real' fullscreen mode 1: keep resolution 'desktop' fullscreen mode
extern idCVar r_multiSamples; // number of antialiasing samples
extern idCVar r_ignore; // used for random debugging without defining new vars

View file

@ -97,8 +97,15 @@ bool GLimp_Init(glimpParms_t parms) {
Uint32 flags = SDL_WINDOW_OPENGL;
if (parms.fullScreen)
flags |= SDL_WINDOW_FULLSCREEN;
if (parms.fullScreen == 1)
{
#if SDL_VERSION_ATLEAST(2, 0, 0)
if(r_fullscreenDesktop.GetBool())
flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
else
#endif
flags |= SDL_WINDOW_FULLSCREEN;
}
int colorbits = 24;
int depthbits = 24;