diff --git a/src/rendering/polyrenderer/poly_renderer.cpp b/src/rendering/polyrenderer/poly_renderer.cpp index 5373d9432..b928979c5 100644 --- a/src/rendering/polyrenderer/poly_renderer.cpp +++ b/src/rendering/polyrenderer/poly_renderer.cpp @@ -68,7 +68,7 @@ void PolyRenderer::RenderView(player_t *player, DCanvas *target, void *videobuff RenderTarget = target; RenderToCanvas = false; - RenderActorView(player->mo, false); + RenderActorView(player->mo, true, false); Threads.MainThread()->FlushDrawQueue(); @@ -102,7 +102,7 @@ void PolyRenderer::RenderViewToCanvas(AActor *actor, DCanvas *canvas, int x, int viewactive = true; // Render: - RenderActorView(actor, dontmaplines); + RenderActorView(actor, false, dontmaplines); Threads.MainThread()->FlushDrawQueue(); DrawerThreads::WaitForWorkers(); @@ -119,7 +119,7 @@ void PolyRenderer::RenderViewToCanvas(AActor *actor, DCanvas *canvas, int x, int RenderTarget = savedRenderTarget; } -void PolyRenderer::RenderActorView(AActor *actor, bool dontmaplines) +void PolyRenderer::RenderActorView(AActor *actor, bool drawpsprites, bool dontmaplines) { PolyTotalBatches = 0; PolyTotalTriangles = 0; @@ -181,7 +181,9 @@ void PolyRenderer::RenderActorView(AActor *actor, bool dontmaplines) mainViewpoint.StencilValue = GetNextStencilValue(); Scene.CurrentViewpoint = &mainViewpoint; Scene.Render(&mainViewpoint); - PlayerSprites.Render(Threads.MainThread()); + if (drawpsprites) + PlayerSprites.Render(Threads.MainThread()); + Scene.CurrentViewpoint = nullptr; if (Viewpoint.camera) diff --git a/src/rendering/polyrenderer/poly_renderer.h b/src/rendering/polyrenderer/poly_renderer.h index 949196af9..4750d2b04 100644 --- a/src/rendering/polyrenderer/poly_renderer.h +++ b/src/rendering/polyrenderer/poly_renderer.h @@ -71,7 +71,7 @@ public: FLevelLocals *Level; private: - void RenderActorView(AActor *actor, bool dontmaplines); + void RenderActorView(AActor *actor, bool drawpsprites, bool dontmaplines); void SetSceneViewport(); RenderPolyPlayerSprites PlayerSprites;