From d4c9b1ef7ba7a60874ffa7ab2ac4b427a83910e5 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sat, 26 Nov 2016 07:01:36 +0200 Subject: [PATCH] Deprecate Renderer::begin() and remove the already deprecated escape() --- source/renderer.cpp | 42 +++++++++++++----------------------------- source/renderer.h | 14 +++++--------- 2 files changed, 18 insertions(+), 38 deletions(-) diff --git a/source/renderer.cpp b/source/renderer.cpp index 45cf241e..e57967d9 100644 --- a/source/renderer.cpp +++ b/source/renderer.cpp @@ -31,7 +31,8 @@ Renderer::Renderer(const Camera *c): shdata_stack.reserve(32); state = &state_stack.back(); - begin(c); + if(c) + set_camera(*c); } Renderer::~Renderer() @@ -41,12 +42,7 @@ Renderer::~Renderer() 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); } @@ -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"); - reset_state(); + *state = State(); + shdata_stack.clear(); + excluded.clear(); Mesh::unbind(); Texturing::unbind(); @@ -218,6 +209,13 @@ void Renderer::end() 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) @@ -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), diff --git a/source/renderer.h b/source/renderer.h index 1f4624ce..79557eab 100644 --- a/source/renderer.h +++ b/source/renderer.h @@ -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 - 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 @@ -157,14 +159,9 @@ public: 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 - 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 &); @@ -175,7 +172,6 @@ public: private: void apply_state(); - void reset_state(); }; } // namespace GL -- 2.45.2