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; NzSceneRoot root;
NzAbstractViewer* viewer = nullptr; NzAbstractViewer* viewer = nullptr;
bool backgroundEnabled = true; bool backgroundEnabled = true;
bool update; bool update = false;
float frameTime; float frameTime;
float updateTime; float updateTime;
int renderTechniqueRanking; int renderTechniqueRanking;
@ -99,8 +99,18 @@ void NzScene::Draw()
catch (const std::exception& e) catch (const std::exception& e)
{ {
NzString oldName = m_impl->renderTechnique->GetName(); 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; return;
} }
} }