From b0cdf4de7bfdf5863ce34dcb26180d8cf86266c2 Mon Sep 17 00:00:00 2001 From: Kai Blaschke Date: Sat, 8 Jun 2024 17:20:00 +0200 Subject: [PATCH] Add optional FBO ID parameter to render function. This will allow external apps to pass in any custom FBO to render to. Defaults to 0, keeping previous behavior if not given. --- src/libprojectM/ProjectM.cpp | 5 ++--- src/libprojectM/ProjectM.hpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libprojectM/ProjectM.cpp b/src/libprojectM/ProjectM.cpp index ae9390efa..3e97724de 100644 --- a/src/libprojectM/ProjectM.cpp +++ b/src/libprojectM/ProjectM.cpp @@ -90,7 +90,7 @@ void ProjectM::ResetTextures() m_textureManager = std::make_unique(m_textureSearchPaths); } -void ProjectM::RenderFrame() +void ProjectM::RenderFrame(uint32_t targetFramebufferObject /*= 0*/) { // Don't render if window area is zero. if (m_windowWidth == 0 || m_windowHeight == 0) @@ -166,8 +166,7 @@ void ProjectM::RenderFrame() // ToDo: Call the to-be-implemented render method in Renderer m_activePreset->RenderFrame(audioData, renderContext); - // ToDo: Allow external apps to provide a custom target framebuffer. - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, static_cast(targetFramebufferObject)); if (m_transition != nullptr && m_transitioningPreset != nullptr) { diff --git a/src/libprojectM/ProjectM.hpp b/src/libprojectM/ProjectM.hpp index b84e29335..844597128 100644 --- a/src/libprojectM/ProjectM.hpp +++ b/src/libprojectM/ProjectM.hpp @@ -101,7 +101,7 @@ public: void ResetTextures(); - void RenderFrame(); + void RenderFrame(uint32_t targetFramebufferObject = 0); void SetBeatSensitivity(float sensitivity);