- removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers. Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions. The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
This commit is contained in:
parent
927b351174
commit
d474b849a5
18 changed files with 243 additions and 238 deletions
|
|
@ -392,6 +392,17 @@ subsector_t *R_PointInSubsector (fixed_t x, fixed_t y)
|
|||
return (subsector_t *)((uint8_t *)node - 1);
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
extern int currentrenderer;
|
||||
EXTERN_CVAR(Int, vid_renderer)
|
||||
FRenderer *CreateSWRenderer();
|
||||
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// R_Init
|
||||
|
|
@ -405,6 +416,19 @@ void R_Init ()
|
|||
StartScreen->Progress();
|
||||
R_InitTranslationTables ();
|
||||
R_SetViewSize (screenblocks);
|
||||
|
||||
currentrenderer = vid_renderer;
|
||||
if (currentrenderer == 1)
|
||||
Printf("Renderer: OpenGL\n");
|
||||
else
|
||||
Printf("Renderer: Software on OpenGL\n");
|
||||
|
||||
if (SWRenderer == NULL)
|
||||
{
|
||||
SWRenderer = CreateSWRenderer();
|
||||
}
|
||||
|
||||
SWRenderer->Init();
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -415,6 +439,8 @@ void R_Init ()
|
|||
|
||||
static void R_Shutdown ()
|
||||
{
|
||||
if (SWRenderer != nullptr) delete SWRenderer;
|
||||
SWRenderer = nullptr;
|
||||
R_DeinitTranslationTables();
|
||||
R_DeinitColormaps ();
|
||||
FCanvasTextureInfo::EmptyList();
|
||||
|
|
@ -1079,7 +1105,7 @@ void FCanvasTextureInfo::UpdateAll ()
|
|||
{
|
||||
if (probe->Viewpoint != NULL && probe->Texture->bNeedsUpdate)
|
||||
{
|
||||
Renderer->RenderTextureView(probe->Texture, probe->Viewpoint, probe->FOV);
|
||||
screen->RenderTextureView(probe->Texture, probe->Viewpoint, probe->FOV);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue