dmuratshin 8 ani în urmă
părinte
comite
2d3344e351

+ 0 - 1
examples/Demo/src/TestOpenGL.h

@@ -75,7 +75,6 @@ public:
 
     void doRender(const RenderState& rs)
     {
-        Material::setCurrent(0);
         STDRenderer::getCurrent()->flush();
 
 

+ 10 - 4
examples/Demo/src/TestTiled.h

@@ -23,6 +23,7 @@ public:
     int height;
 
     spNativeTexture nt;
+    spSTDMaterialX mat;
 
     int tileWidth;
     int tileHeight;
@@ -75,11 +76,18 @@ public:
 
             }
         }
+ 
 
         nt = IVideoDriver::instance->createTexture();
         nt->init(dest.lock());
         nt->setClamp2Edge(true);
         nt->setLinearFilter(false);
+
+
+
+        mat = new STDMaterialX;
+        mat->_base = nt;
+        mat->_blend = blend_premultiplied_alpha;
     }
 
     Tiled(const std::string& tmx, const std::string& texture)
@@ -198,13 +206,11 @@ public:
 
     void doRender(const RenderState& rs)
     {
-        Material::setCurrent(rs.material);
+        mat->apply();
+
 
         STDRenderer* renderer = STDRenderer::getCurrent();
-        renderer->setTexture(nt);
         renderer->setTransform(rs.transform);
-        renderer->setBlendMode(blend_premultiplied_alpha);
-
 
         Transform world = rs.transform;
         world.invert();

+ 4 - 7
oxygine/src/oxygine/Actor.cpp

@@ -36,7 +36,7 @@ namespace oxygine
         _parent(0),
         _alpha(255),
         _stage(0),
-        _material(0)
+        _rdelegate(STDMaterial::instance)
     {
         _transform.identity();
         _transformInvert.identity();
@@ -59,7 +59,7 @@ namespace oxygine
         _alpha = src._alpha;
 
         _pressedOvered = 0;
-        _material = 0;
+        _rdelegate = src._rdelegate;
 
         _transform = src._transform;
         _transformInvert = src._transformInvert;
@@ -676,7 +676,7 @@ namespace oxygine
 
     void Actor::setMaterial(Material* mat)
     {
-        _material = mat;
+        _rdelegate = mat;
     }
 
 
@@ -1142,10 +1142,7 @@ namespace oxygine
 
     void Actor::render(const RenderState& parentRS)
     {
-        RenderState rs = parentRS;
-        if (_material)
-            rs.material = _material;
-        rs.material->render(this, rs);
+        _rdelegate->render(this, parentRS);
     }
 
     RectF Actor::getDestRect() const

+ 2 - 2
oxygine/src/oxygine/Actor.h

@@ -114,7 +114,7 @@ namespace oxygine
         bool                getTouchEnabled() const { return (_flags & flag_touchEnabled) != 0; }
         bool                getTouchChildrenEnabled() const { return (_flags & flag_touchChildrenEnabled) != 0; }
         UpdateCallback      getCallbackDoUpdate() const {return _cbDoUpdate;}
-        Material*           getMaterial() { return _material; }
+        Material*           getMaterial() { return _rdelegate; }
         //RenderCallback        getCallbackDoRender() const {return _cbDoRender;}
 
         /**return local actor transformation*/
@@ -292,7 +292,7 @@ namespace oxygine
 
     protected:
 
-        Material* _material;
+        Material* _rdelegate;
         Stage* _stage;
 
         void added2stage(Stage*);

+ 0 - 1
oxygine/src/oxygine/Box9Sprite.cpp

@@ -292,7 +292,6 @@ namespace oxygine
         const Diffuse& df = _frame.getDiffuse();
 
         STDRenderer* renderer = STDRenderer::getCurrent();
-        Material::setCurrent(rs.material);
 
         if (df.base)
         {

+ 1 - 1
oxygine/src/oxygine/ClipRectActor.cpp

@@ -39,7 +39,7 @@ namespace oxygine
 
     void ClipRectActor::render(const RenderState& parentRS)
     {
-        parentRS.material->render(this, parentRS);
+        _rdelegate->render(this, parentRS);
     }
 
     void ClipRectActor::serialize(serializedata* data)

+ 1 - 1
oxygine/src/oxygine/ColorRectSprite.cpp

@@ -26,7 +26,7 @@ namespace oxygine
 
     void ColorRectSprite::doRender(const RenderState& rs)
     {
-        rs.material->doRender(this, rs);
+        _rdelegate->doRender(this, rs);
     }
 
     void ColorRectSprite::sizeChanged(const Vector2& size)

+ 1 - 4
oxygine/src/oxygine/MaskedSprite.cpp

@@ -40,10 +40,7 @@ namespace oxygine
 
     void MaskedSprite::render(const RenderState& parentRS)
     {
-        RenderState rs = parentRS;
-        if (_material)
-            rs.material = _material;
-        rs.material->render(this, rs);
+        _rdelegate->render(this, parentRS);
     }
 
 

+ 0 - 15
oxygine/src/oxygine/Material.cpp

@@ -4,21 +4,6 @@ namespace oxygine
 {
     Material::~Material()
     {
-        OX_ASSERT(currentMaterial != this);
-        if (currentMaterial == this)
-            currentMaterial = 0;
     }
 
-
-    Material* Material::currentMaterial = 0;
-    void Material::setCurrent(Material* next)
-    {
-        if (currentMaterial == next)
-            return;
-        if (currentMaterial)
-            currentMaterial->finish();
-        if (next)
-            next->apply(currentMaterial);
-        currentMaterial = next;
-    }
 }

+ 0 - 3
oxygine/src/oxygine/Material.h

@@ -6,9 +6,6 @@ namespace oxygine
     class Material
     {
     public:
-        static Material* currentMaterial;
-        static void setCurrent(Material*);
-
         virtual ~Material();
         virtual void apply(Material* prev = 0) {}
         virtual void finish() {}

+ 2 - 4
oxygine/src/oxygine/PostProcess.cpp

@@ -295,7 +295,6 @@ namespace oxygine
         if (!postProcessItems.empty())
         {
             _renderingPP = true;
-            Material::setCurrent(0);
 
             IVideoDriver* driver = IVideoDriver::instance;
             //driver->setState(IVideoDriver::STATE_BLEND, 0);
@@ -397,7 +396,6 @@ namespace oxygine
         _transform = actor->computeGlobalTransform().inverted();
 
 
-        Material::setCurrent(0);
         MaterialX::current = 0;
 
 
@@ -432,11 +430,11 @@ namespace oxygine
             rs.transform = rs.transform * offset;
         }
 
-        rs.material->Material::render(actor, rs);
+        //OX_ASSERT(0);
+        STDMaterial::instance->Material::render(actor, rs);
 
         STDRenderer::current->flush();
 
-        Material::setCurrent(0);
         MaterialX::current = 0;
     }
 

+ 0 - 4
oxygine/src/oxygine/ProgressBar.cpp

@@ -114,10 +114,6 @@ namespace oxygine
         }
 
 
-        Material::setCurrent(rs.material);
-        //rs.material->doRender(this, rs);
-        ///*
-
         STDRenderer* renderer = STDRenderer::getCurrent();
 
         const Diffuse& df = _frame.getDiffuse();

+ 1 - 2
oxygine/src/oxygine/RenderState.h

@@ -28,7 +28,6 @@ namespace oxygine
     class RenderState: public RState
     {
     public:
-        RenderState(Material* mat = STDMaterial::instance): material(mat) {}
-        Material* material;
+        RenderState(){}
     };
 }

+ 0 - 7
oxygine/src/oxygine/STDMaterial.cpp

@@ -33,10 +33,6 @@ namespace oxygine
 
     void STDMaterial::render(ClipRectActor* actor, const RenderState& parentRS)
     {
-        //Material::render(actor, parentRS);
-        //return;
-        Material::setCurrent(this);
-
         RenderState rs = parentRS;
 
         const RectF* parentClippedRect = parentRS.clip;
@@ -91,9 +87,6 @@ namespace oxygine
 
     void STDMaterial::render(MaskedSprite* sprite, const RenderState& parentRS)
     {
-        Material::setCurrent(this);
-
-
         spSprite mask = sprite->getMask();
         if (mask && mask->getAnimFrame().getDiffuse().base)
         {

+ 1 - 1
oxygine/src/oxygine/Sprite.cpp

@@ -291,7 +291,7 @@ namespace oxygine
 
     void Sprite::doRender(const RenderState& rs)
     {
-        rs.material->doRender(this, rs);
+        _rdelegate->doRender(this, rs);
     }
 
     void Sprite::serialize(serializedata* data)

+ 2 - 6
oxygine/src/oxygine/Stage.cpp

@@ -29,7 +29,7 @@ namespace oxygine
         }
         _stage = this;
 
-        _material = STDMaterial::instance;
+        _rdelegate = STDMaterial::instance;
 
 #ifdef OXYGINE_SDL
         _window = 0;
@@ -139,7 +139,6 @@ namespace oxygine
 
     void Stage::render(const Color* clearColor, const Rect& viewport, const Matrix& view, const Matrix& proj)
     {
-        Material::setCurrent(0);
 
         IVideoDriver* driver = IVideoDriver::instance;
         driver->setViewport(viewport);
@@ -150,12 +149,10 @@ namespace oxygine
         Matrix vp = view * proj;
         STDRenderer::instance->setViewProj(vp);
 
-        RenderState rs(_material);
+        RenderState rs;
         Point ds = core::getDisplaySize();
 
 
-        Material::setCurrent(_material);
-
         RectF clip(0.0f, 0.0f, (float)ds.x, (float)ds.y);
         rs.clip = &clip;
 
@@ -167,7 +164,6 @@ namespace oxygine
 
         Actor::render(rs);
 
-        Material::setCurrent(0);
 
         STDRenderer::getCurrent()->flush();
 

+ 1 - 1
oxygine/src/oxygine/TextField.cpp

@@ -417,7 +417,7 @@ namespace oxygine
 
     void TextField::doRender(RenderState const& rs)
     {
-        rs.material->doRender(this, rs);
+        _rdelegate->doRender(this, rs);
     }
 
     void TextField::serialize(serializedata* data)

+ 0 - 1
oxygine/src/oxygine/TweenGlow.cpp

@@ -27,7 +27,6 @@ namespace oxygine
 
 
             RenderState r = rs;
-            r.material = mat;
             actor->setMaterial(_prevMaterial);
             actor->render(r);
             actor->setMaterial(this);

+ 0 - 1
oxygine/src/oxygine/TweenOutline.cpp

@@ -43,7 +43,6 @@ namespace oxygine
 
 
             RenderState r = rs;
-            r.material = STDMaterial::instance;
             actor->setMaterial(_prevMaterial);
             actor->render(r);
             actor->setMaterial(this);

+ 1 - 1
oxygine/src/oxygine/core/oxygine.cpp

@@ -852,7 +852,7 @@ namespace oxygine
             Event ev(EVENT_EXIT);
             _dispatcher->dispatchEvent(&ev);
 
-            Material::setCurrent(0);
+
             STDRenderer::release();
             delete STDMaterial::instance;
             STDMaterial::instance = 0;

+ 0 - 12
oxygine/src/oxygine/dev_tools/TreeInspectorPreview.cpp

@@ -60,8 +60,6 @@ namespace oxygine
 
     Vector2 TreeInspectorPreview::render2cache(spActor item, const Vector2& size, bool child)
     {
-        Material::setCurrent(0);
-
         _render2cache = true;
 
         VideoDriverCache& cache = _videoCache;
@@ -94,11 +92,6 @@ namespace oxygine
             item->doRender(rs);
 
 
-        Material::setCurrent(0);
-
-
-        //setSize(30, 30);
-
         RectF itemRect = cache._bounds;
         if (itemRect == RectF::invalidated())
         {
@@ -153,12 +146,7 @@ namespace oxygine
     void TreeInspectorPreview::doRender(RenderState const& parentRenderState)
     {
         Sprite::doRender(parentRenderState);
-        Material::setCurrent(0);
-
-        //STDMaterial::instance->getRenderer()->drawBatch();
         _videoCache.render(parentRenderState.transform);
-        //STDMaterial::instance->getRenderer()->drawBatch();
-        //STDMaterial::instance->getRenderer()->resetSettings();
     }
 
     VideoDriverCache::VideoDriverCache()