From d59156e81bd387b553afc1951030ffa3df26ee55 Mon Sep 17 00:00:00 2001 From: Erik Broberg Date: Fri, 2 Sep 2016 18:23:44 -0400 Subject: [PATCH] Enable render global frame number and add as global property --- include/openspace/engine/settingsengine.h | 2 ++ include/openspace/rendering/renderengine.h | 5 ++++- src/engine/settingsengine.cpp | 9 +++++++++ src/rendering/renderengine.cpp | 22 +++++++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/include/openspace/engine/settingsengine.h b/include/openspace/engine/settingsengine.h index f1faa111e7..c305e13148 100644 --- a/include/openspace/engine/settingsengine.h +++ b/include/openspace/engine/settingsengine.h @@ -46,9 +46,11 @@ public: private: void initEyeSeparation(); void initSceneFiles(); + void initShowFrameNumber(); properties::FloatProperty _eyeSeparation; properties::OptionProperty _scenes; + properties::BoolProperty _showFrameNumber; }; } // namespace openspace diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index ee248864d8..eebaaf30a9 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -117,7 +117,7 @@ public: float globalBlackOutFactor(); void setGlobalBlackOutFactor(float factor); void setNAaSamples(int nAaSamples); - + void setShowFrameNumber(bool enabled); void setDisableRenderingOnMaster(bool enabled); @@ -214,16 +214,19 @@ private: bool _showInfo; bool _showLog; bool _takeScreenshot; + bool _showFrameNumber; float _globalBlackOutFactor; float _fadeDuration; float _currentFadeTime; int _fadeDirection; int _nAaSamples; + unsigned int _frameNumber; std::vector _programs; std::vector> _screenSpaceRenderables; + std::shared_ptr _fontBig = nullptr; std::shared_ptr _fontInfo = nullptr; std::shared_ptr _fontDate = nullptr; std::shared_ptr _fontLog = nullptr; diff --git a/src/engine/settingsengine.cpp b/src/engine/settingsengine.cpp index 56549da586..cc2f36be0c 100644 --- a/src/engine/settingsengine.cpp +++ b/src/engine/settingsengine.cpp @@ -38,6 +38,7 @@ namespace openspace { SettingsEngine::SettingsEngine() : _eyeSeparation("eyeSeparation", "Eye Separation" , 0.f, 0.f, 10.f) , _scenes("scenes", "Scene", properties::OptionProperty::DisplayType::DROPDOWN) + , _showFrameNumber("showFrameNumber", "Show frame number", false) { setName("Global Properties"); } @@ -45,6 +46,7 @@ SettingsEngine::SettingsEngine() void SettingsEngine::initialize() { initEyeSeparation(); initSceneFiles(); + initShowFrameNumber(); } void SettingsEngine::setModules(std::vector modules) { @@ -61,6 +63,13 @@ void SettingsEngine::initEyeSeparation() { [this]() { OsEng.windowWrapper().setEyeSeparationDistance(_eyeSeparation); }); } +void SettingsEngine::initShowFrameNumber() { + addProperty(_showFrameNumber); + + _showFrameNumber.onChange( + [this]() { OsEng.renderEngine().setShowFrameNumber(_showFrameNumber.value()); } ); +} + void SettingsEngine::initSceneFiles() { addProperty(_scenes); diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index 2991099afd..cfafb02bbe 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -128,6 +128,7 @@ RenderEngine::RenderEngine() , _fadeDuration(2.f) , _currentFadeTime(0.f) , _fadeDirection(0) + , _frameNumber(0) , _frametimeType(FrametimeType::DtTimeAvg) // , _sgctRenderStatisticsVisible(false) { @@ -180,6 +181,7 @@ void RenderEngine::setRendererFromString(const std::string& renderingMethod) { } bool RenderEngine::initialize() { + _frameNumber = 0; std::string renderingMethod = DefaultRenderingMethod; // If the user specified a rendering method that he would like to use, use that @@ -228,6 +230,7 @@ bool RenderEngine::initialize() { MissionManager::initialize(); #endif + return true; } @@ -240,6 +243,8 @@ bool RenderEngine::initializeGL() { OsEng.windowWrapper().setNearFarClippingPlane(0.001f, 1000.f); try { + const float fontSizeBig = 50.f; + _fontBig = OsEng.fontManager().font(KeyFontMono, fontSizeBig); const float fontSizeTime = 15.f; _fontDate = OsEng.fontManager().font(KeyFontMono, fontSizeTime); const float fontSizeMono = 10.f; @@ -409,7 +414,6 @@ void RenderEngine::postSynchronizationPreDraw() { //} } - void RenderEngine::render(const glm::mat4& projectionMatrix, const glm::mat4& viewMatrix){ _mainCamera->sgctInternal.setViewMatrix(viewMatrix); _mainCamera->sgctInternal.setProjectionMatrix(projectionMatrix); @@ -424,6 +428,18 @@ void RenderEngine::render(const glm::mat4& projectionMatrix, const glm::mat4& vi renderInformation(); } } + + glm::vec2 penPosition = glm::vec2( + OsEng.windowWrapper().viewportPixelCoordinates().y / 2 - 50, + OsEng.windowWrapper().viewportPixelCoordinates().w / 3 + ); + + if(_showFrameNumber) { + RenderFontCr(*_fontBig, penPosition, "%i", _frameNumber); + } + + _frameNumber++; + for (auto screenSpaceRenderable : _screenSpaceRenderables) { if (screenSpaceRenderable->isEnabled() && screenSpaceRenderable->isReady()) @@ -1205,6 +1221,10 @@ void RenderEngine::changeViewPoint(std::string origin) { LFATAL("This function is being misused with an argument of '" << origin << "'"); } +void RenderEngine::setShowFrameNumber(bool enabled){ + _showFrameNumber = enabled; +} + void RenderEngine::setDisableRenderingOnMaster(bool enabled) { _disableMasterRendering = enabled; }