# Conflicts:
#	src/posix/cocoa/i_video.mm
#	src/win32/hardware.cpp
#	wadsrc/static/menudef.txt
This commit is contained in:
raa-eruanna 2016-09-08 03:26:11 -04:00
commit dede94b7e2
731 changed files with 94186 additions and 113 deletions

View file

@ -63,6 +63,45 @@ bool ForceWindowed;
IVideo *Video;
// do not include GL headers here, only declare the necessary functions.
IVideo *gl_CreateVideo();
FRenderer *gl_CreateInterface();
void I_RestartRenderer();
int currentrenderer = -1;
bool changerenderer;
// [ZDoomGL]
CUSTOM_CVAR (Int, vid_renderer, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
// 0: Software renderer
// 1: OpenGL renderer
if (self != currentrenderer)
{
switch (self)
{
case 0:
Printf("Switching to software renderer...\n");
break;
case 1:
Printf("Switching to OpenGL renderer...\n");
break;
default:
Printf("Unknown renderer (%d). Falling back to software renderer...\n", *vid_renderer);
self = 0; // make sure to actually switch to the software renderer
break;
}
//changerenderer = true;
Printf("You must restart " GAMENAME " to switch the renderer\n");
}
}
CCMD (vid_restart)
{
}
void I_ShutdownGraphics ()
{
if (screen)
@ -95,15 +134,18 @@ void I_InitGraphics ()
// not receive a WM_ACTIVATEAPP message, so both games think they
// are the active app. Huh?
}
val.Bool = !!Args->CheckParm ("-devparm");
ticker.SetGenericRepDefault (val, CVAR_Bool);
Video = new Win32Video (0);
//currentrenderer = vid_renderer;
if (currentrenderer==1) Video = gl_CreateVideo();
else Video = new Win32Video (0);
if (Video == NULL)
I_FatalError ("Failed to initialize display");
atterm (I_ShutdownGraphics);
Video->SetWindowedScale (vid_winscale);
}
@ -114,9 +156,11 @@ static void I_DeleteRenderer()
void I_CreateRenderer()
{
currentrenderer = vid_renderer;
if (Renderer == NULL)
{
Renderer = new FSoftwareRenderer;
if (currentrenderer==1) Renderer = gl_CreateInterface();
else Renderer = new FSoftwareRenderer;
atterm(I_DeleteRenderer);
}
}
@ -149,12 +193,12 @@ DFrameBuffer *I_SetMode (int &width, int &height, DFrameBuffer *old)
}
DFrameBuffer *res = Video->CreateFrameBuffer (width, height, swtruecolor, fs, old);
/* Right now, CreateFrameBuffer cannot return NULL
//* Right now, CreateFrameBuffer cannot return NULL
if (res == NULL)
{
I_FatalError ("Mode %dx%d is unavailable\n", width, height);
}
*/
//*/
return res;
}
@ -256,7 +300,8 @@ void I_SaveWindowedPos ()
return;
}
// Make sure we only save the window position if it's not fullscreen.
if ((GetWindowLong (Window, GWL_STYLE) & WS_OVERLAPPEDWINDOW) == WS_OVERLAPPEDWINDOW)
static const int WINDOW_STYLE = WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX;
if ((GetWindowLong (Window, GWL_STYLE) & WINDOW_STYLE) == WINDOW_STYLE)
{
RECT wrect;
@ -323,7 +368,7 @@ CUSTOM_CVAR(Bool, swtruecolor, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINIT
setmodeneeded = true;
}
CUSTOM_CVAR (Bool, fullscreen, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL)
CUSTOM_CVAR (Bool, fullscreen, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOINITCALL)
{
NewWidth = screen->GetWidth();
NewHeight = screen->GetHeight();
@ -343,7 +388,7 @@ CUSTOM_CVAR (Float, vid_winscale, 1.f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
NewWidth = screen->GetWidth();
NewHeight = screen->GetHeight();
NewBits = DisplayBits;
setmodeneeded = true;
//setmodeneeded = true; // This CVAR doesn't do anything and only causes problems!
}
}