- fixed: The global variables holding the view's fixed colormap must be preserved when rendering to a camera texture.

This commit is contained in:
Christoph Oelckers 2013-07-23 12:32:33 +02:00
parent 181181a865
commit af470b3d56
1 changed files with 11 additions and 0 deletions

View File

@ -62,6 +62,9 @@
extern bool DrawFSHUD; // [RH] Defined in d_main.cpp extern bool DrawFSHUD; // [RH] Defined in d_main.cpp
EXTERN_CVAR (Bool, cl_capfps) EXTERN_CVAR (Bool, cl_capfps)
extern lighttable_t* fixedcolormap;
extern FSpecialColormap*realfixedcolormap;
// TYPES ------------------------------------------------------------------- // TYPES -------------------------------------------------------------------
struct InterpolationViewer struct InterpolationViewer
@ -1005,6 +1008,11 @@ void FCanvasTextureInfo::UpdateAll ()
{ {
FCanvasTextureInfo *probe; FCanvasTextureInfo *probe;
// curse Doom's overuse of global variables in the renderer.
// These get clobbered by rendering to a camera texture but they need to be preserved so the final rendering can be done with the correct palette.
unsigned char *savecolormap = fixedcolormap;
FSpecialColormap *savecm = realfixedcolormap;
for (probe = List; probe != NULL; probe = probe->Next) for (probe = List; probe != NULL; probe = probe->Next)
{ {
if (probe->Viewpoint != NULL && probe->Texture->bNeedsUpdate) if (probe->Viewpoint != NULL && probe->Texture->bNeedsUpdate)
@ -1012,6 +1020,9 @@ void FCanvasTextureInfo::UpdateAll ()
Renderer->RenderTextureView(probe->Texture, probe->Viewpoint, probe->FOV); Renderer->RenderTextureView(probe->Texture, probe->Viewpoint, probe->FOV);
} }
} }
fixedcolormap = savecolormap;
realfixedcolormap = savecm;
} }
//========================================================================== //==========================================================================