From f62d0bb677c83e18d70925b2b05b344c822c22c7 Mon Sep 17 00:00:00 2001 From: Malin E Date: Tue, 21 Mar 2023 13:53:05 +0100 Subject: [PATCH] Make sure openGL state is reset after rendering globes --- modules/globebrowsing/src/renderableglobe.cpp | 5 +++++ modules/video/include/videoplayer.h | 4 ++-- modules/video/src/videoplayer.cpp | 5 +++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 439a939b0e..334bca801f 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -807,6 +808,10 @@ void RenderableGlobe::render(const RenderData& data, RendererTasks& rendererTask } _lastChangedLayer = nullptr; + + // Reset + global::renderEngine->openglStateCache().resetBlendState(); + global::renderEngine->openglStateCache().resetDepthState(); } void RenderableGlobe::renderSecondary(const RenderData& data, RendererTasks&) { diff --git a/modules/video/include/videoplayer.h b/modules/video/include/videoplayer.h index 4d5dc15573..abf0477493 100644 --- a/modules/video/include/videoplayer.h +++ b/modules/video/include/videoplayer.h @@ -55,7 +55,7 @@ public: void pause(); void play(); void goToStart(); - + void seekToTime(double time, bool pauseAfter = false); void toggleMute(); @@ -124,7 +124,7 @@ private: // Video properties. Try to read all these values from the video std::string _videoFile; double _currentVideoTime = 0.0; - double _fps = 24.0; // If when we read it it is 0, use 24 fps + double _fps = 24.0; // If when we read it it is 0, use 24 fps double _videoDuration = 0.0; glm::ivec2 _videoResolution = glm::ivec2(2048, 1024); // Used for the fbos bool _isPaused = false; diff --git a/modules/video/src/videoplayer.cpp b/modules/video/src/videoplayer.cpp index 36fcffb5bf..0b69929f54 100644 --- a/modules/video/src/videoplayer.cpp +++ b/modules/video/src/videoplayer.cpp @@ -29,10 +29,12 @@ #include #include #include +#include #include #include #include #include +#include namespace { constexpr std::string_view _loggerCat = "VideoPlayer"; @@ -530,8 +532,7 @@ void VideoPlayer::renderMpv() { /* TODO: remove this comment in case we never encounter this issue again */ // We have to set the Viewport on every cycle because // mpv_render_context_render internally rescales the fb of the context(?!)... - glm::ivec2 window = global::windowDelegate->currentDrawBufferResolution(); - glViewport(0, 0, window.x, window.y); + global::renderEngine->openglStateCache().resetViewportState(); // We also need to reset the render target glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO);