]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/renderer.cpp
Use constructor delegation instead of init functions when possible
[libs/gl.git] / source / render / renderer.cpp
index 6f7e9cba34d3c156a50e255372d0c59d078e8da9..b142da75448652c3135a9aa3b30e796aa374f8ac 100644 (file)
@@ -2,8 +2,8 @@
 #include "buffer.h"
 #include "camera.h"
 #include "clipping.h"
-#include "deviceinfo.h"
 #include "error.h"
+#include "framebuffer.h"
 #include "lighting.h"
 #include "material.h"
 #include "program.h"
@@ -29,7 +29,6 @@ Renderer::Renderer():
        shdata_stack.reserve(32);
        state = &state_stack.back();
        add_shader_data(standard_shdata);
-       commands.use_pipeline(pipeline_state);
 }
 
 Renderer::~Renderer()
@@ -224,7 +223,7 @@ void Renderer::end()
        add_shader_data(standard_shdata);
        excluded.clear();
 
-       PipelineState::clear();
+       commands.use_pipeline(0);
 }
 
 void Renderer::exclude(const Renderable &renderable)
@@ -243,21 +242,18 @@ void Renderer::render(const Renderable &renderable, Tag tag)
                renderable.render(*this, tag);
 }
 
-void Renderer::clear()
-{
-       clear(COLOR_BUFFER_BIT|DEPTH_BUFFER_BIT|STENCIL_BUFFER_BIT);
-}
-
-void Renderer::clear(BufferBits buffers)
+void Renderer::clear(const ClearValue *values)
 {
        pipeline_state.set_framebuffer(state->framebuffer);
-       commands.clear(buffers);
+       commands.use_pipeline(&pipeline_state);
+       commands.clear(values);
 }
 
 void Renderer::draw(const Batch &batch)
 {
        apply_state();
        batch.refresh();
+       commands.use_pipeline(&pipeline_state);
        commands.draw(batch);
 }
 
@@ -265,10 +261,11 @@ void Renderer::draw_instanced(const Batch &batch, unsigned count)
 {
        apply_state();
        batch.refresh();
+       commands.use_pipeline(&pipeline_state);
        commands.draw_instanced(batch, count);
 }
 
-void Renderer::resolve_multisample(Framebuffer &target, BufferBits buffers)
+void Renderer::resolve_multisample(Framebuffer &target)
 {
        if(!state->framebuffer)
                throw invalid_operation("Renderer::resolve_multisample");
@@ -279,7 +276,18 @@ void Renderer::resolve_multisample(Framebuffer &target, BufferBits buffers)
                throw incompatible_data("Renderer::resolve_multisample");
 
        pipeline_state.set_framebuffer(state->framebuffer);
-       commands.resolve_multisample(target, buffers);
+       commands.use_pipeline(&pipeline_state);
+       commands.resolve_multisample(target);
+}
+
+void Renderer::begin_query(const QueryPool &pool, unsigned index)
+{
+       commands.begin_query(pool, index);
+}
+
+void Renderer::end_query(const QueryPool &pool, unsigned index)
+{
+       commands.end_query(pool, index);
 }
 
 void Renderer::apply_state()