dmuratshin 8 vuotta sitten
vanhempi
sitoutus
d0505471db
2 muutettua tiedostoa jossa 18 lisäystä ja 23 poistoa
  1. 16 18
      oxygine/src/oxygine/MaskedRenderer.cpp
  2. 2 5
      oxygine/src/oxygine/MaskedRenderer.h

+ 16 - 18
oxygine/src/oxygine/MaskedRenderer.cpp

@@ -7,35 +7,33 @@ namespace oxygine
 {
     MaskedRenderer::MaskedRenderer(spNativeTexture mask,
                                    const RectF& srcRect, const RectF& destRect,
-                                   const Transform& t, bool channelR, IVideoDriver* driver) : STDRenderer(driver), _mask(mask)
+                                   const Transform& t, bool channelR, IVideoDriver* driver) : STDRenderer(driver)
     {
-        _clipUV = ClipUV(
-                      t.transform(destRect.getLeftTop()),
-                      t.transform(destRect.getRightTop()),
-                      t.transform(destRect.getLeftBottom()),
-                      srcRect.getLeftTop(),
-                      srcRect.getRightTop(),
-                      srcRect.getLeftBottom());
+        ClipUV clipUV = ClipUV(
+                            t.transform(destRect.getLeftTop()),
+                            t.transform(destRect.getRightTop()),
+                            t.transform(destRect.getLeftBottom()),
+                            srcRect.getLeftTop(),
+                            srcRect.getRightTop(),
+                            srcRect.getLeftBottom());
 
-        _clipMask = srcRect;
+        RectF clipMask = srcRect;
         Vector2 v(1.0f / mask->getWidth(), 1.0f / mask->getHeight());
-        _clipMask.expand(v, v);
+        clipMask.expand(v, v);
 
         _baseShaderFlags |= UberShaderProgram::MASK;
         if (channelR)
             _baseShaderFlags |= UberShaderProgram::MASK_R_CHANNEL;
 
-        _driver->setTexture(UberShaderProgram::SAMPLER_MASK, _mask);
+        clipUV.get(_msk);
+        _clipMask = Vector4(clipMask.getLeft(), clipMask.getTop(), clipMask.getRight(), clipMask.getBottom());
+
+        _driver->setTexture(UberShaderProgram::SAMPLER_MASK, mask);
     }
 
     void MaskedRenderer::shaderProgramChanged()
     {
-        Vector4 vc(_clipMask.getLeft(), _clipMask.getTop(), _clipMask.getRight(), _clipMask.getBottom());
-        _driver->setUniform("clip_mask", vc);
-
-        Vector3 msk[4];
-        _clipUV.get(msk);
-
-        _driver->setUniform("msk", msk, 4);
+        _driver->setUniform("clip_mask", _clipMask);
+        _driver->setUniform("msk", _msk, 4);
     }
 }

+ 2 - 5
oxygine/src/oxygine/MaskedRenderer.h

@@ -74,13 +74,10 @@ namespace oxygine
     public:
         MaskedRenderer(spNativeTexture mask, const RectF& srcRect, const RectF& destRect, const Transform& t, bool channelR, IVideoDriver*);
 
-        //void draw(const RState *rs, const RectF &destRect) OVERRIDE;
-
     protected:
         void shaderProgramChanged() override;
 
-        spNativeTexture _mask;
-        RectF _clipMask;
-        ClipUV _clipUV;
+        Vector3 _msk[4];
+        Vector4 _clipMask;
     };
 }