diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 590330a33..7051c10c8 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -1933,6 +1933,7 @@ void CHyprOpenGLImpl::renderTextureWithBlurInternal(SP tex, const CBox if (NEEDS_STENCIL) { scissor(nullptr); // allow the entire window and stencil to render + glStencilMask(0xFF); glClearStencil(0); glClear(GL_STENCIL_BUFFER_BIT); @@ -1964,7 +1965,8 @@ void CHyprOpenGLImpl::renderTextureWithBlurInternal(SP tex, const CBox glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glStencilFunc(GL_EQUAL, 1, 0xFF); - glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + glStencilMask(0x00); + glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); } // stencil done. Render everything. diff --git a/src/render/gl/GLElementRenderer.cpp b/src/render/gl/GLElementRenderer.cpp index 670c78862..dbf62cb8f 100644 --- a/src/render/gl/GLElementRenderer.cpp +++ b/src/render/gl/GLElementRenderer.cpp @@ -24,15 +24,17 @@ void CGLElementRenderer::draw(WP element, const CRegion& dama RASSERT(g_pHyprRenderer->m_renderData.pMonitor, "Tried to render without begin()!"); TRACY_GPU_ZONE("RenderClear"); - - GLCALL(glClearColor(color.r, color.g, color.b, color.a)); + const std::array c = {sc(color.r), sc(color.g), sc(color.b), sc(color.a)}; if (!g_pHyprRenderer->m_renderData.damage.empty()) { - g_pHyprRenderer->m_renderData.damage.forEachRect([](const auto& RECT) { + g_pHyprRenderer->m_renderData.damage.forEachRect([&c](const auto& RECT) { g_pHyprOpenGL->scissor(&RECT, g_pHyprRenderer->m_renderData.transformDamage); - glClear(GL_COLOR_BUFFER_BIT); + glClearBufferfv(GL_COLOR, 0, c.data()); }); - } + + g_pHyprOpenGL->scissor(nullptr); + } else + glClearBufferfv(GL_COLOR, 0, c.data()); }; void CGLElementRenderer::draw(WP element, const CRegion& damage) {