++state->shdata_count;
else
{
- if(shdata_stack.size()>state->shdata_count)
- shdata_stack.erase(shdata_stack.begin()+state->shdata_count, shdata_stack.end());
+ flush_shader_data();
shdata_stack.push_back(&d);
state->shdata_count = shdata_stack.size();
changed |= SHADER_DATA;
}
}
+void Renderer::flush_shader_data()
+{
+ if(shdata_stack.size()>state->shdata_count)
+ shdata_stack.erase(shdata_stack.begin()+state->shdata_count, shdata_stack.end());
+}
+
void Renderer::set_mesh(const Mesh *m)
{
state->mesh = m;
state->reverse_winding = r;
}
+void Renderer::set_object_lod_bias(unsigned b)
+{
+ state->object_lod_bias = b;
+}
+
void Renderer::push_state()
{
state_stack.push_back(state_stack.back());
batch.draw();
}
+void Renderer::draw_instanced(const Batch &batch, unsigned count)
+{
+ apply_state();
+
+ batch.draw_instanced(count);
+}
+
void Renderer::apply_state()
{
/* We (mostly) let the objects themselves figure out if the binding has
mesh(0),
vertex_setup(0),
winding_test(0),
- reverse_winding(false)
+ reverse_winding(false),
+ object_lod_bias(0)
{ }
} // namespace GL