Bug fix when changing geometry in a Renderer 88/42588/2
authorFerran Sole <ferran.sole@samsung.com>
Tue, 30 Jun 2015 10:50:51 +0000 (11:50 +0100)
committerFerran Sole <ferran.sole@samsung.com>
Tue, 30 Jun 2015 10:55:38 +0000 (11:55 +0100)
Attribute location vector in RenderPropertyBuffer was not being updated when geometry changed.
Change-Id: I3bb5b13f552965790fbb8c4738fdd9372d618a07

dali/internal/render/renderers/render-geometry.cpp
dali/internal/render/renderers/render-geometry.h
dali/internal/render/renderers/render-renderer-property-buffer.cpp
dali/internal/render/renderers/render-renderer-property-buffer.h

index 450be3b..808854c 100644 (file)
@@ -56,7 +56,7 @@ void RenderGeometry::UploadAndDraw(
   BufferIndex bufferIndex,
   const RenderDataProvider* dataProviders )
 {
-  UploadVertexData( context, bufferIndex, dataProviders );
+  UploadVertexData( context, program, bufferIndex, dataProviders );
 
   for( unsigned int i = 0; i < mVertexBuffers.Count(); ++i )
   {
@@ -84,6 +84,7 @@ void RenderGeometry::GeometryUpdated()
 
 void RenderGeometry::UploadVertexData(
   Context& context,
+  Program& program,
   BufferIndex bufferIndex,
   const RenderDataProvider* dataProviders )
 {
@@ -94,6 +95,7 @@ void RenderGeometry::UploadVertexData(
     for( unsigned int i = 0; i < mVertexBuffers.Count(); ++i )
     {
       mVertexBuffers[i]->Upload( context, bufferIndex );
+      mVertexBuffers[i]->UpdateAttributeLocations( context, bufferIndex, program );
     }
     if( mIndexBuffer )
     {
@@ -114,6 +116,7 @@ void RenderGeometry::SetUpPropertyBuffers(
 
   DALI_ASSERT_DEBUG( vertexBuffers.Count() > 0 && "Need vertex buffers to upload" );
 
+  mVertexBuffers.Clear();
   for( unsigned int i=0; i<vertexBuffers.Count(); ++i)
   {
     const PropertyBufferDataProvider* vertexBuffer = vertexBuffers[i];
index f52ab35..cfcf85b 100644 (file)
@@ -93,6 +93,7 @@ public:
    * @param[in] geometryDataProvider The geometry data provider (to fetch geometry from)
    */
   void UploadVertexData( Context& context,
+                         Program& program,
                          BufferIndex bufferIndex,
                          const RenderDataProvider* dataProviders );
 
index f312822..eccdc50 100644 (file)
@@ -199,13 +199,6 @@ void RenderPropertyBuffer::BindBuffer( Context& context, Program& progam )
 
 void RenderPropertyBuffer::EnableVertexAttributes( Context& context, BufferIndex bufferIndex, Program& program )
 {
-
-  // Check if attribute locations are cached already
-  if( mAttributesLocation.Size() == 0 )
-  {
-    UpdateAttributeLocations( context, bufferIndex, program );
-  }
-
   unsigned int attributeCount = mDataProvider.GetAttributeCount( bufferIndex );
   DALI_ASSERT_DEBUG( attributeCount == mAttributesLocation.Size() && "Incorrect number of attributes!" );
 
index 0d703a9..c0cf359 100644 (file)
@@ -91,8 +91,6 @@ public:
    */
   void DisableVertexAttributes( Context& context, BufferIndex bufferIndex, Program& program );
 
-private: // implementation
-
   /**
    * Update attribute locations
    * @param[in] context The GL context