Geometry Batching
[platform/core/uifw/dali-core.git] / dali / internal / render / renderers / render-renderer.cpp
index cbad8bb..cfaa2be 100644 (file)
@@ -154,7 +154,8 @@ Renderer::Renderer( SceneGraph::RenderDataProvider* dataProvider,
   mDepthTestMode( depthTestMode ),
   mWriteToColorBuffer( writeToColorBuffer ),
   mUpdateAttributesLocation( true ),
-  mPremultipledAlphaEnabled( preMultipliedAlphaEnabled )
+  mPremultipledAlphaEnabled( preMultipliedAlphaEnabled ),
+  mBatchingEnabled( false )
 {
   if(  blendingBitmask != 0u )
   {
@@ -572,6 +573,11 @@ bool Renderer::GetWriteToColorBuffer() const
   return mWriteToColorBuffer;
 }
 
+void Renderer::SetBatchingEnabled( bool batchingEnabled )
+{
+  mBatchingEnabled = batchingEnabled;
+}
+
 void Renderer::Render( Context& context,
                        SceneGraph::TextureCache& textureCache,
                        BufferIndex bufferIndex,
@@ -582,6 +588,7 @@ void Renderer::Render( Context& context,
                        const Matrix& viewMatrix,
                        const Matrix& projectionMatrix,
                        const Vector3& size,
+                       Render::Geometry* externalGeometry,
                        bool blend )
 {
   // Get the program to use:
@@ -630,14 +637,15 @@ void Renderer::Render( Context& context,
     }
 
     SetUniforms( bufferIndex, node, size, *program );
+    Render::Geometry* geometry = externalGeometry ? externalGeometry : mGeometry;
 
-    if( mUpdateAttributesLocation || mGeometry->AttributesChanged() )
+    if( mUpdateAttributesLocation || geometry->AttributesChanged() )
     {
-      mGeometry->GetAttributeLocationFromProgram( mAttributesLocation, *program, bufferIndex );
+      geometry->GetAttributeLocationFromProgram( mAttributesLocation, *program, bufferIndex );
       mUpdateAttributesLocation = false;
     }
 
-    mGeometry->UploadAndDraw( context, bufferIndex, mAttributesLocation, mIndexedDrawFirstElement, mIndexedDrawElementsCount );
+    geometry->UploadAndDraw( context, bufferIndex, mAttributesLocation, mIndexedDrawFirstElement, mIndexedDrawElementsCount );
   }
 }