]> git.tdb.fi Git - libs/gl.git/commitdiff
Deprecate Renderer::begin() and remove the already deprecated escape()
authorMikko Rasa <tdb@tdb.fi>
Sat, 26 Nov 2016 05:01:36 +0000 (07:01 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 26 Nov 2016 05:01:36 +0000 (07:01 +0200)
source/renderer.cpp
source/renderer.h

index 45cf241e8ec3798ab0a0368c389b8794fa11f5d3..e57967d9c46b227c5a9bad4da50c7af1320b1864 100644 (file)
@@ -31,7 +31,8 @@ Renderer::Renderer(const Camera *c):
        shdata_stack.reserve(32);
        state = &state_stack.back();
 
        shdata_stack.reserve(32);
        state = &state_stack.back();
 
-       begin(c);
+       if(c)
+               set_camera(*c);
 }
 
 Renderer::~Renderer()
 }
 
 Renderer::~Renderer()
@@ -41,12 +42,7 @@ Renderer::~Renderer()
 
 void Renderer::begin(const Camera *c)
 {
 
 void Renderer::begin(const Camera *c)
 {
-       if(state_stack.size()>1)
-               throw invalid_operation("Renderer::begin");
-
-       reset_state();
-       excluded.clear();
-
+       end();
        if(c)
                set_camera(*c);
 }
        if(c)
                set_camera(*c);
 }
@@ -195,19 +191,14 @@ void Renderer::pop_state()
        }
 }
 
        }
 }
 
-void Renderer::escape()
-{
-       apply_state();
-       Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
-       matrices_loaded = false;
-}
-
 void Renderer::end()
 {
        if(state_stack.size()>1)
                throw invalid_operation("Renderer::end");
 
 void Renderer::end()
 {
        if(state_stack.size()>1)
                throw invalid_operation("Renderer::end");
 
-       reset_state();
+       *state = State();
+       shdata_stack.clear();
+       excluded.clear();
 
        Mesh::unbind();
        Texturing::unbind();
 
        Mesh::unbind();
        Texturing::unbind();
@@ -218,6 +209,13 @@ void Renderer::end()
        Program::unbind();
        Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
        WindingTest::unbind();
        Program::unbind();
        Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
        WindingTest::unbind();
+
+       if(matrices_loaded)
+       {
+               MatrixStack::projection().pop();
+               MatrixStack::modelview().pop();
+               matrices_loaded = false;
+       }
 }
 
 void Renderer::exclude(const Renderable &renderable)
 }
 
 void Renderer::exclude(const Renderable &renderable)
@@ -396,20 +394,6 @@ void Renderer::apply_state()
        }
 }
 
        }
 }
 
-void Renderer::reset_state()
-{
-       if(!matrices_loaded)
-               return;
-
-       if(camera)
-               MatrixStack::projection().pop();
-       MatrixStack::modelview().pop();
-       matrices_loaded = false;
-       changed |= MATRIX;
-
-       *state = State();
-}
-
 
 Renderer::State::State():
        camera(0),
 
 Renderer::State::State():
        camera(0),
index 1f4624ce889476370c25fef2e0077db723c8ded1..79557eab20b5e368c65be3b50d021cbb124d32a6 100644 (file)
@@ -111,7 +111,9 @@ public:
 
        /** Resets all internal state and restarts rendering.  There must be no
        unpopped state in the stack.  It is permissible to call begin() multiple
 
        /** Resets all internal state and restarts rendering.  There must be no
        unpopped state in the stack.  It is permissible to call begin() multiple
-       times without an intervening end(). */
+       times without an intervening end().
+
+       Deprecated; use end() and set_camera() instead.*/
        void begin(const Camera *);
 
        /** Sets the camera to render from.  The modelview matrix is reset to the
        void begin(const Camera *);
 
        /** Sets the camera to render from.  The modelview matrix is reset to the
@@ -157,14 +159,9 @@ public:
        push_state call. */
        void pop_state();
 
        push_state call. */
        void pop_state();
 
-       /** Prepares for temporarily bypassing the Renderer by synchronizing the
-       current state with GL.  No additional call is necessary to resume using the
-       Renderer.  DEPRECATED. */
-       void escape();
-
        /** Unbinds all objects and resets related state.  There must be no unpopped
        /** Unbinds all objects and resets related state.  There must be no unpopped
-       state in the stack.  Rendering with the same camera can be restarted without
-       an explicit begin() call. */
+       state in the stack.  The Renderer remains valid and may be reused for
+       further rendering. */
        void end();
 
        void exclude(const Renderable &);
        void end();
 
        void exclude(const Renderable &);
@@ -175,7 +172,6 @@ public:
 
 private:
        void apply_state();
 
 private:
        void apply_state();
-       void reset_state();
 };
 
 } // namespace GL
 };
 
 } // namespace GL