Browse Source

refactoring

dmuratshin 8 years ago
parent
commit
89bd79b03f

+ 5 - 6
examples/Demo/src/TestRender2Texture.h

@@ -63,8 +63,9 @@ public:
 
         STDRenderer& renderer = *STDRenderer::getCurrent();
 
-#if 1
         renderer.begin(texture);
+#if 1
+
         RectF destRect(te->localPosition - Vector2(16, 16), Vector2(32, 32));
 
         ResAnim* brush = resources.getResAnim(left ? "brush" : "brush_eraser");
@@ -81,19 +82,17 @@ public:
 
 
         renderer.draw(color, frame.getSrcRect(), destRect);
-        renderer.end();
+
 #else
-        //how to render actors to texture
-        Material::setCurrent(0);
 
         spActor actor = new ManageResTest;
         actor->setScale(0.5f);
 
         RenderState rs;
-        rs.material = STDMaterial::instance;
         actor->setAlpha(64);
         actor->render(rs);
-        Material::setCurrent(0);
 #endif
+
+        renderer.end();
     }
 };

+ 2 - 4
oxygine/src/PostProcess.cpp

@@ -413,9 +413,8 @@ namespace oxygine
 
 
         RenderState rs;
-        STDMaterial* mat = STDMaterial::instance;
         STDRenderer* renderer = STDRenderer::instance;
-        rs.material = mat;
+
 
         RectF clip = vp.cast<RectF>();
         rs.clip = &clip;
@@ -433,9 +432,8 @@ namespace oxygine
             rs.transform = rs.transform * offset;
         }
 
-        mat->Material::render(actor, rs);
+        rs.material->Material::render(actor, rs);
 
-        //mat->finish();
         Material::setCurrent(0);
     }
 

+ 2 - 1
oxygine/src/RenderState.h

@@ -1,6 +1,7 @@
 #pragma once
 #include "oxygine-include.h"
 #include "core/Renderer.h"
+#include "STDMaterial.h"
 
 namespace oxygine
 {
@@ -27,7 +28,7 @@ namespace oxygine
     class RenderState: public RState
     {
     public:
-        RenderState(): material(0) {}
+        RenderState(Material* mat = STDMaterial::instance): material(mat) {}
         Material* material;
     };
 }

+ 3 - 3
oxygine/src/STDMaterial.cpp

@@ -196,13 +196,13 @@ namespace oxygine
             float offset = tf->getWeight();
             float outline = tf->getWeight() - tf->getOutline();
 
-            renderer->beginSDFont(contrast, offset, tf->getOutlineColor(), outline);
+            renderer->applySDF(contrast, offset, tf->getOutlineColor(), outline);
             root->draw(dc);
-            renderer->endSDFont();
+            renderer->endSDF();
         }
         else
         {
-            renderer->beginElementRendering(true);
+            renderer->applySimpleMode(true);
             root->draw(dc);
         }
     }

+ 8 - 5
oxygine/src/STDRenderer.cpp

@@ -279,7 +279,7 @@ namespace oxygine
 
     void STDRenderer::begin()
     {
-        OX_ASSERT(!_drawing);
+        //OX_ASSERT(!_drawing);
         OX_ASSERT(_vertices.empty() == true);
         _program = 0;
         _vertices.clear();
@@ -295,6 +295,9 @@ namespace oxygine
 
     void STDRenderer::end()
     {
+        if (!_drawing)
+            return;
+
         OX_ASSERT(_drawing);
         drawBatch();
 
@@ -582,7 +585,7 @@ namespace oxygine
         _uberShader = pr;
     }
 
-    void STDRenderer::beginSDFont(float contrast, float offset, const Color& outlineColor, float outlineOffset)
+    void STDRenderer::applySDF(float contrast, float offset, const Color& outlineColor, float outlineOffset)
     {
         if (_alpha)
         {
@@ -614,7 +617,7 @@ namespace oxygine
         _driver->setUniform("sdf_params", c);
     }
 
-    void STDRenderer::endSDFont()
+    void STDRenderer::endSDF()
     {
         drawBatch();
         _shaderFlags &= ~(UberShaderProgram::SDF | UberShaderProgram::SDF_OUTLINE);
@@ -623,7 +626,7 @@ namespace oxygine
         setShader(prog);
     }
 
-    void STDRenderer::beginElementRendering(bool basePremultiplied)
+    void STDRenderer::applySimpleMode(bool basePremultiplied)
     {
         if (_alpha)
         {
@@ -645,7 +648,7 @@ namespace oxygine
         }
     }
 
-    void STDRenderer::drawElement(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest)
+    void STDRenderer::draw(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest)
     {
         if (_base != texture)
         {

+ 13 - 9
oxygine/src/STDRenderer.h

@@ -10,8 +10,6 @@ namespace oxygine
 
         static STDRenderer* current;
         static STDRenderer* instance;
-        /**Sets default rendering OpenGL options for 2D*/
-        static void setDefaultSettings();
         /**Initializes internal classes. Called automatically from oxygine::init();*/
         static void initialize();
         /**Clears internal data*/
@@ -45,7 +43,6 @@ namespace oxygine
         unsigned int    getShaderFlags() const;
 
         void setViewProj(const Matrix& viewProj);
-        void setViewProjTransform(const Matrix& viewProj);
         void setVertexDeclaration(const VertexDeclaration* decl);
         void setUberShaderProgram(UberShaderProgram* pr);
         /**Sets blend mode. Default value is blend_premultiplied_alpha*/
@@ -54,16 +51,20 @@ namespace oxygine
         void setTexture(const spNativeTexture& base, const spNativeTexture& alpha, bool basePremultiplied = true);
         void setTexture(const spNativeTexture& base, bool basePremultiplied = true);
         /**Sets World transformation.*/
-        void setTransform(const Transform& tr);
-
-        void beginElementRendering(bool basePremultiplied);// OVERRIDE;
-        void beginSDFont(float contrast, float offset, const Color& outlineColor, float outlineOffset);
-        void endSDFont();
-        void drawElement(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest) override;
+        void setTransform(const Transform& world);
         void draw(const Color&, const RectF& srcRect, const RectF& destRect);
+
         /**Draws existing batch immediately.*/
         void drawBatch();
 
+
+        void applySDF(float contrast, float offset, const Color& outlineColor, float outlineOffset);
+        void endSDF();
+
+        void applySimpleMode(bool basePremultiplied);
+        /**used in pair with applySimpleMode/applySDF, fast, don't have excess checks*/
+        void draw(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest) override;
+
         /**Begins rendering into RenderTexture or into primary framebuffer if rt is null*/
         void begin();
         void begin(spNativeTexture nt, const Rect* viewport = 0);
@@ -84,6 +85,9 @@ namespace oxygine
         void swapVerticesData(std::vector<unsigned char>& data);
         void swapVerticesData(STDRenderer& r);
 
+        OXYGINE_DEPRECATED
+        void setViewProjTransform(const Matrix& viewProj);
+
     protected:
         Transform _transform;
 

+ 1 - 2
oxygine/src/Stage.cpp

@@ -150,8 +150,7 @@ namespace oxygine
         Matrix vp = view * proj;
         STDRenderer::instance->setViewProj(vp);
 
-        RenderState rs;
-        rs.material = _material;
+        RenderState rs(_material);
         Point ds = core::getDisplaySize();
 
 

+ 2 - 2
oxygine/src/TweenAlphaFade.cpp

@@ -24,9 +24,9 @@ namespace oxygine
             AffineTransform tr = _pp._transform * _actor->computeGlobalTransform();
 
             renderer->setTransform(tr);
-            renderer->beginElementRendering(true);
+            renderer->applySimpleMode(true);
             Color color = Color(Color::White).withAlpha(_a).premultiplied();
-            renderer->drawElement(rt, color.rgba(), src, dest);
+            renderer->draw(rt, color.rgba(), src, dest);
             renderer->drawBatch();
         }
 

+ 2 - 2
oxygine/src/TweenGlow.cpp

@@ -44,11 +44,11 @@ namespace oxygine
 
             AffineTransform tr = _pp._transform * _actor->computeGlobalTransform();
             renderer->setTransform(tr);
-            renderer->beginElementRendering(true);
+            renderer->applySimpleMode(true);
             Color color = Color(Color::White).withAlpha(255).premultiplied();
             color = Color::White;
             renderer->setBlendMode(blend_add);
-            renderer->drawElement(_pp._rt, color.rgba(), src, dest);
+            renderer->draw(_pp._rt, color.rgba(), src, dest);
             renderer->drawBatch();
         }
 

+ 2 - 2
oxygine/src/TweenOutline.cpp

@@ -30,9 +30,9 @@ namespace oxygine
 
             AffineTransform tr = _pp._transform * _actor->computeGlobalTransform();
             renderer->setTransform(tr);
-            renderer->beginElementRendering(true);
+            renderer->applySimpleMode(true);
             Color color = Color(Color::White).withAlpha(255).premultiplied();
-            renderer->drawElement(_pp._rt, color.rgba(), src, dest);
+            renderer->draw(_pp._rt, color.rgba(), src, dest);
             renderer->drawBatch();
 
 

+ 1 - 1
oxygine/src/core/Renderer.h

@@ -218,7 +218,7 @@ namespace oxygine
     {
     public:
         virtual ~IElementRenderer() {}
-        virtual void drawElement(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest) = 0;
+        virtual void draw(const spNativeTexture& texture, unsigned int color, const RectF& src, const RectF& dest) = 0;
     };
 
     /**Returns View matrix where Left Top corner is (0,0), and right bottom is (w,h)*/

+ 3 - 3
oxygine/src/core/ThreadDispatcher.h

@@ -57,7 +57,7 @@ namespace oxygine
 
             callback    cb;
             void*       cbData;
-            
+
             std::function< void() >     cbFunction;
 
             unsigned int _id;
@@ -80,7 +80,7 @@ namespace oxygine
 
         //blocking
         void wait();
-        
+
         //blocking
         void get(message& ev);
 
@@ -90,7 +90,7 @@ namespace oxygine
 
         //blocking, sends message and waiting reply from other thread
         void* send(int msgid, void* arg1, void* arg2);
-        
+
         //blocking, sends callback and waiting until it is done
         void* sendCallback(void* arg1, void* arg2, callback cb, void* cbData, bool highPriority = false);
 

+ 1 - 2
oxygine/src/dev_tools/TreeInspectorPreview.cpp

@@ -71,13 +71,12 @@ namespace oxygine
 
         STDRenderer renderer(&cache);
         //STDRenderer::current = &renderer;
-        renderer.setViewProjTransform(STDRenderer::instance->getViewProjection());
+        renderer.setViewProj(STDRenderer::instance->getViewProjection());
         //renderer.begin();
         STDRenderer::current = &renderer;
         //STDMaterial mat;
 
         RenderState rs;
-        rs.material = STDMaterial::instance;
         RectF clip = RectF::huge();
         rs.clip = &clip;
 

+ 1 - 1
oxygine/src/text_utils/Node.cpp

@@ -155,7 +155,7 @@ namespace oxygine
                 const Symbol& s = _data[i];
                 if (!s.gl.texture)
                     continue;
-                dc.renderer->drawElement(s.gl.texture, dc.color.rgba(), s.gl.src, s.destRect);
+                dc.renderer->draw(s.gl.texture, dc.color.rgba(), s.gl.src, s.destRect);
             }
 
             drawChildren(dc);