cogl-material: Set the blend equation even if blend funcs are the same
authorNeil Roberts <neil@linux.intel.com>
Wed, 12 May 2010 17:57:52 +0000 (18:57 +0100)
committerNeil Roberts <neil@linux.intel.com>
Mon, 17 May 2010 15:31:28 +0000 (16:31 +0100)
Previously it would only try to set the blend equation if the RGB and
alpha blending functions were different. However it's completely valid
to use a non-standard blending function when the functions are the
same. This patch moves the blending equation to outside the if
statement.

clutter/cogl/cogl/cogl-material.c

index 8f5e414..5c6b93b 100644 (file)
@@ -1710,6 +1710,13 @@ _cogl_material_flush_base_gl_state (CoglMaterial *material,
 #endif
 
 #ifndef HAVE_COGL_GLES /* GLES 1 only has glBlendFunc */
+      if (have_blend_equation_seperate &&
+          material->blend_equation_rgb != material->blend_equation_alpha)
+        GE (glBlendEquationSeparate (material->blend_equation_rgb,
+                                     material->blend_equation_alpha));
+      else
+        GE (glBlendEquation (material->blend_equation_rgb));
+
       if (blend_factor_uses_constant (material->blend_src_factor_rgb) ||
           blend_factor_uses_constant (material->blend_src_factor_alpha) ||
           blend_factor_uses_constant (material->blend_dst_factor_rgb) ||
@@ -1723,23 +1730,14 @@ _cogl_material_flush_base_gl_state (CoglMaterial *material,
           (material->blend_src_factor_rgb != material->blend_src_factor_alpha ||
            (material->blend_src_factor_rgb !=
             material->blend_src_factor_alpha)))
-        {
-          if (have_blend_equation_seperate &&
-              material->blend_equation_rgb != material->blend_equation_alpha)
-            GE (glBlendEquationSeparate (material->blend_equation_rgb,
-                                         material->blend_equation_alpha));
-          else
-            GE (glBlendEquation (material->blend_equation_rgb));
-
-          GE (glBlendFuncSeparate (material->blend_src_factor_rgb,
-                                   material->blend_dst_factor_rgb,
-                                   material->blend_src_factor_alpha,
-                                   material->blend_dst_factor_alpha));
-        }
+        GE (glBlendFuncSeparate (material->blend_src_factor_rgb,
+                                 material->blend_dst_factor_rgb,
+                                 material->blend_src_factor_alpha,
+                                 material->blend_dst_factor_alpha));
       else
 #endif
-      GE (glBlendFunc (material->blend_src_factor_rgb,
-                       material->blend_dst_factor_rgb));
+        GE (glBlendFunc (material->blend_src_factor_rgb,
+                         material->blend_dst_factor_rgb));
     }
 }