summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/render')
-rw-r--r--src/render/OpenGL.cpp4
-rw-r--r--src/render/gl/GLElementRenderer.cpp12
2 files changed, 10 insertions, 6 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index 590330a3..7051c10c 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -1933,6 +1933,7 @@ void CHyprOpenGLImpl::renderTextureWithBlurInternal(SP<ITexture> 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<ITexture> 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 670c7886..dbf62cb8 100644
--- a/src/render/gl/GLElementRenderer.cpp
+++ b/src/render/gl/GLElementRenderer.cpp
@@ -24,15 +24,17 @@ void CGLElementRenderer::draw(WP<CClearPassElement> 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<GLfloat, 4> c = {sc<GLfloat>(color.r), sc<GLfloat>(color.g), sc<GLfloat>(color.b), sc<GLfloat>(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<CFramebufferElement> element, const CRegion& damage) {