Ver Fonte

fixed broken rendering when ETC1 compression enabled

dmuratshin há 9 anos atrás
pai
commit
ff5c63004b
2 ficheiros alterados com 13 adições e 3 exclusões
  1. 7 2
      oxygine/src/STDRenderer.cpp
  2. 6 1
      oxygine/src/Sprite.cpp

+ 7 - 2
oxygine/src/STDRenderer.cpp

@@ -583,9 +583,14 @@ namespace oxygine
 
     void STDRenderer::beginElementRendering(bool basePremultiplied)
     {
-        unsigned int shaderFlags = _shaderFlags;
+        if (_alpha)
+        {
+            drawBatch();
+            _shaderFlags &= ~UberShaderProgram::SEPARATE_ALPHA;
+            _alpha = 0;
+        }
 
-        _alpha = 0;
+        unsigned int shaderFlags = _shaderFlags;
 
         if (basePremultiplied)
             shaderFlags &= ~UberShaderProgram::ALPHA_PREMULTIPLY;

+ 6 - 1
oxygine/src/Sprite.cpp

@@ -281,9 +281,14 @@ namespace oxygine
         const char* res = node.attribute("resanim").as_string(0);
         if (res && *res)
         {
-            setAnimFrame(data->factory->getFrame(res, node.attribute("column").as_int(0), node.attribute("row").as_int(0)));
+            int col = node.attribute("column").as_int(0);
+            int row = node.attribute("row").as_int(0);
+            AnimationFrame frame = data->factory->getFrame(res, col, row);
+            setAnimFrame(frame);
         }
 
         setFlipped(node.attribute("flipX").as_bool(false), node.attribute("flipY").as_bool(false));
+
+        setBlendMode(blend_premultiplied_alpha);
     }
 }