Fix default value of blend color. 88/40088/3
authorFrancisco Santos <f1.santos@samsung.com>
Thu, 28 May 2015 16:25:32 +0000 (17:25 +0100)
committerFrancisco Santos <f1.santos@samsung.com>
Wed, 3 Jun 2015 13:33:28 +0000 (14:33 +0100)
Also added caching in context.

Change-Id: I2c2e4fe7ab0ffede7006047128f989dcdf994349

dali/internal/render/gl-resources/context.cpp
dali/internal/render/gl-resources/context.h
dali/internal/update/effects/scene-graph-material.cpp

index 2acd79d..381293c 100644 (file)
@@ -77,11 +77,12 @@ Context::Context(Integration::GlAbstraction& glAbstraction)
   mScissorTestEnabled(false),
   mStencilBufferEnabled(false),
   mClearColorSet(false),
+  mUsingDefaultBlendColor(true),
   mBoundArrayBufferId(0),
   mBoundElementArrayBufferId(0),
   mBoundTransformFeedbackBufferId(0),
   mActiveTextureUnit( TEXTURE_UNIT_LAST ),
-  mUsingDefaultBlendColor(true),
+  mBlendColor(Color::TRANSPARENT),
   mBlendFuncSeparateSrcRGB(GL_ONE),
   mBlendFuncSeparateDstRGB(GL_ZERO),
   mBlendFuncSeparateSrcAlpha(GL_ONE),
index 3667025..af9715c 100644 (file)
@@ -290,10 +290,9 @@ public:
    */
   void SetDefaultBlendColor()
   {
-    if( !mUsingDefaultBlendColor )
+    if( ! mUsingDefaultBlendColor )
     {
-      LOG_GL( "BlendColor %f %f %f %f\n", 0.0f, 0.0f, 0.0f, 0.0f );
-      CHECK_GL( mGlAbstraction, mGlAbstraction.BlendColor( 0.0f, 0.0f, 0.0f, 0.0f ) );
+      SetCustomBlendColor( Color::TRANSPARENT );
       mUsingDefaultBlendColor = true;
     }
   }
@@ -303,9 +302,13 @@ public:
    */
   void SetCustomBlendColor( const Vector4& color )
   {
-    LOG_GL( "BlendColor %f %f %f %f\n", color.r, color.g, color.b, color.a );
-    CHECK_GL( mGlAbstraction, mGlAbstraction.BlendColor(color.r, color.g, color.b, color.a) );
-    mUsingDefaultBlendColor = false;
+    if( mUsingDefaultBlendColor || mBlendColor != color )
+    {
+      LOG_GL( "BlendColor %f %f %f %f\n", color.r, color.g, color.b, color.a );
+      CHECK_GL( mGlAbstraction, mGlAbstraction.BlendColor( color.r, color.g, color.b, color.a ) );
+      mUsingDefaultBlendColor = false;
+      mBlendColor = color;
+    }
   }
 
   /**
@@ -1763,6 +1766,7 @@ private: // Data
   bool mScissorTestEnabled;
   bool mStencilBufferEnabled;
   bool mClearColorSet;
+  bool mUsingDefaultBlendColor;
 
   // glBindBuffer() state
   GLuint mBoundArrayBufferId;        ///< The ID passed to glBindBuffer(GL_ARRAY_BUFFER)
@@ -1774,7 +1778,7 @@ private: // Data
   GLuint mBound2dTextureId[ MAX_TEXTURE_UNITS ];  ///< The ID passed to glBindTexture(GL_TEXTURE_2D)
 
   // glBlendColor() state
-  bool mUsingDefaultBlendColor;
+  Vector4 mBlendColor; ///< Blend color
 
   // glBlendFuncSeparate() state
   GLenum mBlendFuncSeparateSrcRGB;   ///< The srcRGB parameter passed to glBlendFuncSeparate()
index 6db9fe0..242282a 100644 (file)
@@ -40,7 +40,7 @@ const unsigned int DEFAULT_BLENDING_OPTIONS( BlendingOptions().GetBitmask() );
 
 Material::Material()
 : mColor( Color::WHITE ),
-  mBlendColor( Color::WHITE ),
+  mBlendColor( Color::TRANSPARENT ),
   mFaceCullingMode(Dali::Material::NONE),
   mBlendingMode(Dali::BlendingMode::AUTO),
   mBlendingOptions( DEFAULT_BLENDING_OPTIONS ),