From 5fbc723842ca64c9236c50843126155118c270f2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 7 Apr 2018 12:59:04 +0200 Subject: [PATCH] - live switching of the renderer works. --- src/gl/renderer/gl_renderer.cpp | 2 +- src/posix/cocoa/i_video.mm | 27 +-------------------------- src/posix/sdl/hardware.cpp | 26 -------------------------- src/v_video.cpp | 28 ++++++++++++++++++++++++++++ src/win32/hardware.cpp | 27 +-------------------------- 5 files changed, 31 insertions(+), 79 deletions(-) diff --git a/src/gl/renderer/gl_renderer.cpp b/src/gl/renderer/gl_renderer.cpp index 2637f26da..0a29edf9f 100644 --- a/src/gl/renderer/gl_renderer.cpp +++ b/src/gl/renderer/gl_renderer.cpp @@ -434,7 +434,7 @@ void FGLRenderer::RenderView(player_t* player) gl_RenderState.SetVertexBuffer(mVBO); mVBO->Reset(); - if (currentrenderer == 0 && 0) + if (currentrenderer == 0) { if (swdrawer == nullptr) swdrawer = new SWSceneDrawer; swdrawer->RenderView(player); diff --git a/src/posix/cocoa/i_video.mm b/src/posix/cocoa/i_video.mm index 036565f25..3d0c0c92d 100644 --- a/src/posix/cocoa/i_video.mm +++ b/src/posix/cocoa/i_video.mm @@ -102,7 +102,7 @@ DFrameBuffer *CreateGLSWFrameBuffer(int width, int height, bool bgra, bool fullscreen); -int currentrenderer; +extern int currentrenderer; EXTERN_CVAR(Bool, ticker ) EXTERN_CVAR(Bool, vid_vsync) @@ -137,31 +137,6 @@ CUSTOM_CVAR(Bool, vid_autoswitch, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_ Printf("You must restart " GAMENAME " to apply graphics switching mode\n"); } -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", - static_cast(vid_renderer)); - self = 0; - break; - } - - Printf("You must restart " GAMENAME " to switch the renderer\n"); - } -} EXTERN_CVAR(Bool, gl_smooth_rendered) diff --git a/src/posix/sdl/hardware.cpp b/src/posix/sdl/hardware.cpp index 418deab3f..ca89bd8bf 100644 --- a/src/posix/sdl/hardware.cpp +++ b/src/posix/sdl/hardware.cpp @@ -61,32 +61,6 @@ extern int NewWidth, NewHeight, NewBits, DisplayBits; bool V_DoModeSetup (int width, int height, int bits); void I_RestartRenderer(); -int currentrenderer; - -// [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", (int) vid_renderer); - self = 0; // make sure to actually switch to the software renderer - break; - } - } - currentrenderer = self; -} void I_ShutdownGraphics () { diff --git a/src/v_video.cpp b/src/v_video.cpp index 6507137f3..956a2a2c1 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -104,6 +104,34 @@ CUSTOM_CVAR(Int, vid_maxfps, 200, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) } } +int currentrenderer = -1; + +// [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", (int)vid_renderer); + self = 0; // make sure to actually switch to the software renderer + break; + } + } + currentrenderer = self; +} + + EXTERN_CVAR(Bool, r_blendmethod) int active_con_scale(); diff --git a/src/win32/hardware.cpp b/src/win32/hardware.cpp index 8edb01190..e6be60788 100644 --- a/src/win32/hardware.cpp +++ b/src/win32/hardware.cpp @@ -67,7 +67,7 @@ IVideo *Video; IVideo *gl_CreateVideo(); void I_RestartRenderer(); -int currentrenderer = -1; +extern int currentrenderer; int currentcanvas = -1; int currentgpuswitch = -1; bool changerenderer; @@ -97,31 +97,6 @@ CUSTOM_CVAR(Int, vid_gpuswitch, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINI } } -// [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) {