-void Renderer::pop_state()
-{
- if(state_stack.size()==1)
- throw stack_underflow("Renderer::pop_state");
-
- state_stack.pop_back();
- state = &state_stack.back();
- changed |= MATRIX;
-}
-
-void Renderer::end()
-{
- if(state_stack.size()>1)
- throw invalid_operation("Renderer::end");
-
- *state = State();
- shdata_stack.clear();
- add_shader_data(standard_shdata);
- excluded.clear();
-
- PipelineState::clear();
-}
-
-void Renderer::exclude(const Renderable &renderable)
-{
- excluded.insert(&renderable);
-}
-
-void Renderer::include(const Renderable &renderable)
-{
- excluded.erase(&renderable);
-}
-
-void Renderer::render(const Renderable &renderable, Tag tag)
-{
- if(!excluded.count(&renderable))
- renderable.render(*this, tag);
-}
-
-void Renderer::clear()
-{
- clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT|STENCIL_BUFFER_BIT);
-}
-
-void Renderer::clear(BufferBits buffers)
-{
- pipeline_state.set_framebuffer(state->framebuffer);
- pipeline_state.apply();
- glClear(buffers);
+ pipeline_state.set_framebuffer(state.framebuffer);
+ pipeline_state.set_viewport(state.viewport);
+ pipeline_state.set_scissor(state.scissor);
+ commands.use_pipeline(&pipeline_state);
+ commands.clear(values);