+void Renderer::end()
+{
+ if(state_stack.size()>1)
+ throw invalid_operation("Renderer::end");
+
+ if(matrices_loaded)
+ {
+ if(camera)
+ MatrixStack::projection().pop();
+ MatrixStack::modelview().pop();
+ matrices_loaded = false;
+ }
+
+ Mesh::unbind();
+ Texturing::unbind();
+ Texture::unbind_from(0);
+ Material::unbind();
+ Lighting::unbind();
+ Program::unbind();
+ Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
+ WindingTest::unbind();
+
+ *state = State();
+}
+