From 35ac24bfdbe90946a9b578fd2775c1167ad49b55 Mon Sep 17 00:00:00 2001 From: Dextinfire <> Date: Sun, 29 Sep 2024 12:26:54 -0700 Subject: [PATCH] Fix renderer flush for masked text draws --- src/renderer/opengl/renderer.cpp | 6 ++---- src/renderer/renderer.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/renderer/opengl/renderer.cpp b/src/renderer/opengl/renderer.cpp index 2c1f599a..f48a1e7a 100644 --- a/src/renderer/opengl/renderer.cpp +++ b/src/renderer/opengl/renderer.cpp @@ -522,8 +522,6 @@ void Renderer::DrawMaskedSpriteOverlay(Sprite const& sprite, Sprite const& mask, return; } - if (isScreencap) Flush(); - if (alpha < 0) alpha = 0; if (alpha > fadeRange + 256) alpha = fadeRange + 256; @@ -535,7 +533,7 @@ void Renderer::DrawMaskedSpriteOverlay(Sprite const& sprite, Sprite const& mask, glBindVertexArray(VAOSprites); if (useMaskAlpha) { - if (CurrentMode != R2D_Masked) { + if (CurrentMode != R2D_Masked || isScreencap) { Flush(); CurrentMode = R2D_Masked; } @@ -546,7 +544,7 @@ void Renderer::DrawMaskedSpriteOverlay(Sprite const& sprite, Sprite const& mask, glUniform1i(MaskedIsInvertedLocation, isInverted); glUniform1i(MaskedIsSameTextureLocation, false); } else { - if (CurrentMode != R2D_MaskedNoAlpha) { + if (CurrentMode != R2D_MaskedNoAlpha || isScreencap) { Flush(); CurrentMode = R2D_MaskedNoAlpha; } diff --git a/src/renderer/renderer.cpp b/src/renderer/renderer.cpp index 2011494e..83e9fdf9 100644 --- a/src/renderer/renderer.cpp +++ b/src/renderer/renderer.cpp @@ -97,7 +97,7 @@ void BaseRenderer::DrawProcessedText_BasicFont( mask.Sheet = *maskedSheet; mask.Bounds = dest; DrawMaskedSpriteOverlay(glyph, mask, dest, color, color.a * 256, 20, - false, 0, false); + false, 0, false, i == 0); } else { DrawSprite(glyph, dest, color); } @@ -112,7 +112,7 @@ void BaseRenderer::DrawProcessedText_BasicFont( mask.Sheet = *maskedSheet; mask.Bounds = dest; DrawMaskedSpriteOverlay(glyph, mask, dest, color, color.a * 256, 20, - false, 0, false); + false, 0, false, i == 0); } else { DrawSprite(glyph, dest, color); } @@ -172,7 +172,7 @@ void BaseRenderer::DrawProcessedText_LBFont( mask.Bounds = outlineDest; DrawMaskedSpriteOverlay(font->OutlineGlyph(text[i].CharId), mask, outlineDest, color, color.a * 256, 20, false, 0, - false); + false, i == 0); } else { DrawSprite(font->OutlineGlyph(text[i].CharId), outlineDest, color); } @@ -200,7 +200,8 @@ void BaseRenderer::DrawProcessedText_LBFont( mask.Sheet = *maskedSheet; mask.Bounds = foregroundDest; DrawMaskedSpriteOverlay(font->Glyph(text[i].CharId), mask, foregroundDest, - color, color.a * 255, 256, false, 0, false); + color, color.a * 255, 256, false, 0, false, + i == 0); } else { DrawSprite(font->Glyph(text[i].CharId), foregroundDest, color); }