#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"
shdata_stack.reserve(32);
state = &state_stack.back();
add_shader_data(standard_shdata);
- commands.use_pipeline(pipeline_state);
}
Renderer::~Renderer()
add_shader_data(standard_shdata);
excluded.clear();
- PipelineState::clear();
+ commands.use_pipeline(0);
}
void Renderer::exclude(const Renderable &renderable)
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);
+ pipeline_state.set_viewport(state->viewport);
+ pipeline_state.set_scissor(state->scissor);
+ 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);
}
{
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");
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()
}
-Renderer::BoundTexture::BoundTexture():
- unit(-1),
- texture(0),
- sampler(0),
- replaced(-1)
-{ }
-
-
Renderer::BoundProgramData::BoundProgramData(const ProgramData *d):
- shdata(d),
- generation(0)
-{ }
-
-
-Renderer::State::State():
- camera(0),
- framebuffer(0),
- viewport(0),
- scissor(0),
- texture_count(0),
- clipping(0),
- shprog(0),
- shdata_count(0),
- vertex_setup(0),
- front_face(NON_MANIFOLD),
- face_cull(NO_CULL),
- depth_test(0),
- stencil_test(0),
- blend(0),
- object_lod_bias(0)
+ shdata(d)
{ }
} // namespace GL