diff options
| author | Vaxry <vaxry@vaxry.net> | 2023-10-21 14:15:48 +0100 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2023-10-21 14:15:56 +0100 |
| commit | 92311d260ab25c11adab05678663bdccaff11fa6 (patch) | |
| tree | d632d8998a979cb8582eede8dcb0d6f6002f19bd /src/render/Renderer.cpp | |
| parent | af72404259f7a39069d1449bedbc49b3e6ae4fbc (diff) | |
renderer: add transformers
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index c153b855..255bdf33 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -406,6 +406,12 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* // render window decorations first, if not fullscreen full if (mode == RENDER_PASS_ALL || mode == RENDER_PASS_MAIN) { + + const bool TRANSFORMERSPRESENT = !pWindow->m_vTransformers.empty(); + + if (TRANSFORMERSPRESENT) + g_pHyprOpenGL->bindOffMain(); + if (!pWindow->m_bIsFullscreen || PWORKSPACE->m_efFullscreenMode != FULLSCREEN_FULL) for (auto& wd : pWindow->m_dWindowDecorations) wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha, offset); @@ -443,6 +449,17 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* g_pHyprOpenGL->renderBorder(&windowBox, g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColorPrevious, renderdata.rounding, borderSize, a2); } } + + if (TRANSFORMERSPRESENT) { + + CFramebuffer* last = g_pHyprOpenGL->m_RenderData.currentFB; + for (auto& t : pWindow->m_vTransformers) { + last = t->transform(last); + } + + g_pHyprOpenGL->bindBackOnMain(); + g_pHyprOpenGL->renderOffToMain(last); + } } if (mode == RENDER_PASS_ALL || mode == RENDER_PASS_POPUP) { |
