]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderer.cpp
Deprecate Renderer::escape() and replace it with end()
[libs/gl.git] / source / renderer.cpp
index 0207f9378324aaed15a22725fbaa5897bf666bff..06841fa7a9a42442b6265b36f2c04d928fed8845 100644 (file)
@@ -47,21 +47,7 @@ Renderer::Renderer(const Camera *c):
 
 Renderer::~Renderer()
 {
-       if(matrices_loaded)
-       {
-               if(camera)
-                       MatrixStack::projection().pop();
-               MatrixStack::modelview().pop();
-       }
-
-       Mesh::unbind();
-       Texturing::unbind();
-       Texture::unbind_from(0);
-       Material::unbind();
-       Lighting::unbind();
-       Program::unbind();
-       Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
-       WindingTest::unbind();
+       end();
 }
 
 void Renderer::set_texture(const Texture *t)
@@ -161,6 +147,30 @@ void Renderer::escape()
        matrices_loaded = false;
 }
 
+void Renderer::end()
+{
+       if(state_stack.size()>1)
+               throw invalid_operation("Renderer::end");
+
+       if(matrices_loaded)
+       {
+               if(camera)
+                       MatrixStack::projection().pop();
+               MatrixStack::modelview().pop();
+       }
+
+       Mesh::unbind();
+       Texturing::unbind();
+       Texture::unbind_from(0);
+       Material::unbind();
+       Lighting::unbind();
+       Program::unbind();
+       Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
+       WindingTest::unbind();
+
+       *state = State();
+}
+
 void Renderer::exclude(const Renderable &renderable)
 {
        excluded.insert(&renderable);