diff --git a/src/WallpaperEngine/Irrlicht/CContext.cpp b/src/WallpaperEngine/Irrlicht/CContext.cpp index ad4713f..1b2d6fd 100644 --- a/src/WallpaperEngine/Irrlicht/CContext.cpp +++ b/src/WallpaperEngine/Irrlicht/CContext.cpp @@ -170,9 +170,7 @@ void CContext::renderFrame (Render::CScene* scene) if (this->m_viewports.empty () == true) { - this->getDevice ()->getVideoDriver ()->beginScene (true, true, scene->getScene ()->getClearColor ().toSColor()); - this->getDevice ()->getSceneManager ()->drawAll (); - this->getDevice ()->getVideoDriver ()->endScene (); + this->drawScene (scene, true); } else { @@ -183,14 +181,18 @@ void CContext::renderFrame (Render::CScene* scene) { // change viewport to render to the correct portion of the display this->getDevice ()->getVideoDriver ()->setViewPort (*cur); - - this->getDevice ()->getVideoDriver ()->beginScene (false, true, scene->getScene ()->getClearColor ().toSColor()); - this->getDevice ()->getSceneManager ()->drawAll (); - this->getDevice ()->getVideoDriver ()->endScene (); + this->drawScene (scene, false); } } } +void CContext::drawScene (Render::CScene* scene, bool backBuffer) +{ + this->getDevice ()->getVideoDriver ()->beginScene (backBuffer, true, scene->getScene ()->getClearColor ().toSColor()); + this->getDevice ()->getSceneManager ()->drawAll (); + this->getDevice ()->getVideoDriver ()->endScene (); +} + void CContext::insertShaderVariable (Render::Shaders::Variables::CShaderVariable* variable) { this->m_globalShaderVariables.push_back (variable); diff --git a/src/WallpaperEngine/Irrlicht/CContext.h b/src/WallpaperEngine/Irrlicht/CContext.h index cf11321..c456b92 100644 --- a/src/WallpaperEngine/Irrlicht/CContext.h +++ b/src/WallpaperEngine/Irrlicht/CContext.h @@ -38,6 +38,7 @@ namespace WallpaperEngine::Irrlicht irr::io::path resolveIncludeShader (const std::string& includeShader); private: void initializeViewports (irr::SIrrlichtCreationParameters& irrlichtCreationParameters); + void drawScene (Render::CScene* scene, bool backBuffer); irr::io::path resolveFile (const irr::io::path& file);