From c3a94577e866154fb45b9c37f8084eeefad10bd8 Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Thu, 2 Feb 2023 12:38:33 -0500 Subject: [PATCH] Create cache for the tiles so we don't have to recreate them each frame --- .../src/tileprovider/videotileprovider.cpp | 11 +++++++++-- .../src/tileprovider/videotileprovider.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/globebrowsing/src/tileprovider/videotileprovider.cpp b/modules/globebrowsing/src/tileprovider/videotileprovider.cpp index 29c23e06a1..819d74afbd 100644 --- a/modules/globebrowsing/src/tileprovider/videotileprovider.cpp +++ b/modules/globebrowsing/src/tileprovider/videotileprovider.cpp @@ -245,8 +245,15 @@ Tile VideoTileProvider::tile(const TileIndex& tileIndex) { if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { LINFO("Framebuffer is not complete"); } - - return Tile{ _frameTexture.get(), std::nullopt, Tile::Status::OK}; + uint64_t hash = tileIndex.hashKey(); + if (_tileCache.find(hash) == _tileCache.end()) { + _tileCache[hash] = Tile{ + _frameTexture.get(), + std::nullopt, + Tile::Status::OK + }; + } + return _tileCache[hash]; } Tile::Status VideoTileProvider::tileStatus(const TileIndex& tileIndex) { diff --git a/modules/globebrowsing/src/tileprovider/videotileprovider.h b/modules/globebrowsing/src/tileprovider/videotileprovider.h index 0cb98be1c7..7725651598 100644 --- a/modules/globebrowsing/src/tileprovider/videotileprovider.h +++ b/modules/globebrowsing/src/tileprovider/videotileprovider.h @@ -132,6 +132,9 @@ private: static int _wakeup; bool _didRender = false; bool _isPaused = false; + + // Cache for rendering the same frame + std::map _tileCache; }; } // namespace openspace::globebrowsing