diff --git a/include/renderpasses.h b/include/renderpasses.h index 583460f..e2ac0d2 100644 --- a/include/renderpasses.h +++ b/include/renderpasses.h @@ -53,6 +53,7 @@ class CRenderWobblyWindowPassElement final: public IPassElement { m_pWindow {pWindow} {} static void initGPUObjects(); + static void deinitGPUObjects(); void draw(const CRegion& damage) override; diff --git a/src/main.cpp b/src/main.cpp index 525534f..4a5cd16 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -190,7 +190,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { } APICALL EXPORT void PLUGIN_EXIT() { - // TODO: CRenderWobblyWindowPassElement::deinitGPUObjects(); + CRenderWobblyWindowPassElement::deinitGPUObjects(); g_pRenderWindowHook = nullptr; g_openWindow = nullptr; } diff --git a/src/renderpasses.cpp b/src/renderpasses.cpp index 82309bb..8c87e82 100644 --- a/src/renderpasses.cpp +++ b/src/renderpasses.cpp @@ -3,6 +3,7 @@ #include "globals.h" #include "wobblywindow.h" +#include #include #include @@ -101,6 +102,13 @@ void CRenderWobblyWindowPassElement::initGPUObjects() { GLCALL(glBindBuffer(GL_ARRAY_BUFFER, 0)); } +void CRenderWobblyWindowPassElement::deinitGPUObjects() { + GLCALL(glDeleteVertexArrays(1, &s_VAO)); + GLCALL(glDeleteBuffers(1, &s_VBO)); + GLCALL(glDeleteBuffers(1, &s_VBO_UVs)); + GLCALL(glDeleteBuffers(1, &s_EBO)); +} + void CRenderWobblyWindowPassElement::draw(const CRegion& damage) { auto* const pWindowFB = g_pHyprOpenGL->m_renderData.currentFB;