// Draw mode inheritance is treated as or-ing the modes together (as they are a bit-mask).
inheritedDrawMode |= node.GetDrawMode();
- node.PrepareRender( updateBufferIndex );
-
// if any child node has moved or had its sort modifier changed, layer is not clean and old frame cannot be reused
// also if node has been deleted, dont reuse old render items
if( nodeDirtyFlags & RenderableUpdateFlags )
}
}
+void UpdateManager::PrepareNodes( BufferIndex updateBufferIndex )
+{
+ for( auto node : mImpl->nodes )
+ {
+ if(node)
+ {
+ node->PrepareRender( updateBufferIndex );
+ }
+ }
+}
+
void UpdateManager::PrepareRenderers( BufferIndex bufferIndex )
{
// Prepare renderers. Each render item maps to a render
}
// generate graphics objects
+ PrepareNodes( bufferIndex );
PrepareRenderers( bufferIndex );
mImpl->graphicsAlgorithms.SubmitRenderInstructions( mImpl->graphics.GetController(), mImpl->renderInstructions, bufferIndex );
}
*/
void UpdateRenderers( BufferIndex bufferIndex );
+ /**
+ * Ensure all nodes inform renderers of any changes to uniform maps
+ * @param[in] bufferIndex to use
+ */
+ void PrepareNodes( BufferIndex bufferIndex );
+
/**
* Prepare renderer graphics
+ * @param[in] bufferIndex to use
*/
void PrepareRenderers( BufferIndex bufferIndex );
void Renderer::UpdateUniformMap( BufferIndex updateBufferIndex, Node& node )
{
- // Called every frame.
+ // Called every frame. Well, it is now...
CollectedUniformMap& localMap = mCollectedUniformMap[ updateBufferIndex ];
// See if we need to update the collected map:
if( mRegenerateUniformMap == REGENERATE_UNIFORM_MAP || // renderer or shader's uniform map has changed
- node.GetUniformMapChanged( updateBufferIndex ) ) // node's uniform map has change
+ node.GetUniformMapChanged( updateBufferIndex ) ) // node's uniform map has change
{
localMap.Resize(0);
{
int updates( 0u );
+ const UniformMap& rendererUniformMap = PropertyOwner::GetUniformMap();
+ const auto& collectedMap = mCollectedUniformMap[updateBufferIndex];
+ if( collectedMap.Count() < rendererUniformMap.Count() )
+ {
+ DALI_LOG_ERROR("%p, i:%u - FAILED TO REGENERATE UNIFORM MAP", this, updateBufferIndex );
+ }
+
auto uboCount = mShader->GetGfxObject()->GetUniformBlockCount();
auto gfxShader = mShader->GetGfxObject();