Optimized Scenes configuration
The scene class no longer create a default background/default rendertechnique at construction, instead it waits for Scene::Cull method and create them if they are invalid Former-commit-id: b5d031abc5d7df4be5ad4edd6036ad7d60cacbb4
This commit is contained in:
parent
2990843f31
commit
5e9201cb22
|
|
@ -31,7 +31,7 @@ struct NzSceneImpl
|
||||||
NzClock updateClock;
|
NzClock updateClock;
|
||||||
NzColor ambientColor = NzColor(25,25,25);
|
NzColor ambientColor = NzColor(25,25,25);
|
||||||
NzSceneRoot root;
|
NzSceneRoot root;
|
||||||
NzAbstractViewer* viewer;
|
NzAbstractViewer* viewer = nullptr;
|
||||||
bool update;
|
bool update;
|
||||||
float frameTime;
|
float frameTime;
|
||||||
float updateTime;
|
float updateTime;
|
||||||
|
|
@ -42,8 +42,6 @@ struct NzSceneImpl
|
||||||
NzScene::NzScene()
|
NzScene::NzScene()
|
||||||
{
|
{
|
||||||
m_impl = new NzSceneImpl(this);
|
m_impl = new NzSceneImpl(this);
|
||||||
m_impl->background.reset(new NzColorBackground);
|
|
||||||
m_impl->renderTechnique.reset(NzRenderTechniques::GetByRanking(-1, &m_impl->renderTechniqueRanking));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NzScene::~NzScene()
|
NzScene::~NzScene()
|
||||||
|
|
@ -66,13 +64,16 @@ void NzScene::Cull()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!m_impl->renderTechnique)
|
||||||
|
m_impl->renderTechnique.reset(NzRenderTechniques::GetByRanking(-1, &m_impl->renderTechniqueRanking));
|
||||||
|
|
||||||
NzAbstractRenderQueue* renderQueue = m_impl->renderTechnique->GetRenderQueue();
|
NzAbstractRenderQueue* renderQueue = m_impl->renderTechnique->GetRenderQueue();
|
||||||
renderQueue->Clear(false);
|
renderQueue->Clear(false);
|
||||||
|
|
||||||
m_impl->visibleUpdateList.clear();
|
m_impl->visibleUpdateList.clear();
|
||||||
|
|
||||||
// Frustum culling
|
// Frustum culling
|
||||||
RecursiveFrustumCull(m_impl->renderTechnique->GetRenderQueue(), m_impl->viewer->GetFrustum(), &m_impl->root);
|
RecursiveFrustumCull(renderQueue, m_impl->viewer->GetFrustum(), &m_impl->root);
|
||||||
|
|
||||||
///TODO: Occlusion culling
|
///TODO: Occlusion culling
|
||||||
|
|
||||||
|
|
@ -91,6 +92,9 @@ void NzScene::Draw()
|
||||||
|
|
||||||
m_impl->viewer->ApplyView();
|
m_impl->viewer->ApplyView();
|
||||||
|
|
||||||
|
if (!m_impl->background)
|
||||||
|
m_impl->background.reset(new NzColorBackground);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NzErrorFlags errFlags(nzErrorFlag_ThrowException);
|
NzErrorFlags errFlags(nzErrorFlag_ThrowException);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue