mUniformIndexMap.Resize(mapIndex);
}
+
+ // @todo Temporary workaround to reduce workload each frame. Find a better way.
+ auto& sceneGraphRenderer = const_cast<SceneGraph::Renderer&>(static_cast<const SceneGraph::Renderer&>(uniformMapDataProvider));
+ sceneGraphRenderer.AgeUniformMap();
}
void Renderer::WriteUniformBuffer(
bool Renderer::PrepareRender(BufferIndex updateBufferIndex)
{
- if(mRegenerateUniformMap == UNIFORM_MAP_READY)
+ switch(mRegenerateUniformMap)
{
- mUniformMapChanged[updateBufferIndex] = false;
- }
- else
- {
- if(mRegenerateUniformMap == REGENERATE_UNIFORM_MAP)
+ case UNIFORM_MAP_READY: // Now, only set to zero on start and by render side
+ {
+ mUniformMapChanged[updateBufferIndex] = false;
+ break;
+ }
+ case REGENERATE_UNIFORM_MAP:
{
CollectedUniformMap& localMap = mCollectedUniformMap[updateBufferIndex];
localMap.Clear();
{
AddMappings(localMap, mShader->GetUniformMap());
}
+ mUniformMapChanged[updateBufferIndex] = true;
+ break;
}
- else if(mRegenerateUniformMap == COPY_UNIFORM_MAP)
+ case COPY_UNIFORM_MAP:
{
// Copy old map into current map
CollectedUniformMap& localMap = mCollectedUniformMap[updateBufferIndex];
{
localMap[index] = *iter;
}
+ mUniformMapChanged[updateBufferIndex] = true;
+ break;
}
-
- mUniformMapChanged[updateBufferIndex] = true;
- mRegenerateUniformMap--;
}
bool rendererUpdated = mUniformMapChanged[updateBufferIndex] || mResendFlag || mRenderingBehavior == DevelRenderer::Rendering::CONTINUOUSLY;
return rendererUpdated;
}
+void Renderer::AgeUniformMap()
+{
+ if(mRegenerateUniformMap > 0)
+ {
+ mRegenerateUniformMap--;
+ }
+}
+
void Renderer::SetTextures(TextureSet* textureSet)
{
DALI_ASSERT_DEBUG(textureSet != NULL && "Texture set pointer is NULL");
void SetDrawCommands(Dali::DevelRenderer::DrawCommand* pDrawCommands, uint32_t size);
+ /**
+ * Temporary fix to age mRegenerateUniformMap from render side.
+ * (aging should only be done if renderer is visible, not when PrepareRender is called)
+ */
+ void AgeUniformMap();
+
private:
/**
* Protected constructor; See also Renderer::New()