Improved rendertechnique fallback (will no longer loop)

Former-commit-id: 1aeb737432de1d2a8f205e547404b3f140967a16
This commit is contained in:
Lynix 2014-06-21 15:38:24 +02:00
parent 9ba6258478
commit f5833aa2d4
1 changed files with 13 additions and 3 deletions

View File

@ -33,7 +33,7 @@ struct NzSceneImpl
NzSceneRoot root;
NzAbstractViewer* viewer = nullptr;
bool backgroundEnabled = true;
bool update;
bool update = false;
float frameTime;
float updateTime;
int renderTechniqueRanking;
@ -99,8 +99,18 @@ void NzScene::Draw()
catch (const std::exception& e)
{
NzString oldName = m_impl->renderTechnique->GetName();
m_impl->renderTechnique.reset(NzRenderTechniques::GetByRanking(m_impl->renderTechniqueRanking-1, &m_impl->renderTechniqueRanking));
NazaraError("Render technique \"" + oldName + "\" failed, switched to \"" + m_impl->renderTechnique->GetName() + '"');
if (m_impl->renderTechniqueRanking > 0)
{
m_impl->renderTechnique.reset(NzRenderTechniques::GetByRanking(m_impl->renderTechniqueRanking-1, &m_impl->renderTechniqueRanking));
NazaraError("Render technique \"" + oldName + "\" failed, fallback to \"" + m_impl->renderTechnique->GetName() + '"');
}
else
{
NzErrorFlags errFlags(nzErrorFlag_ThrowException);
NazaraError("Render technique \"" + oldName + "\" failed and no fallback is available");
}
return;
}
}