Clear winding test after rendering a Mesh
for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
renderer.draw(*i);
for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
renderer.draw(*i);
+
+ renderer.set_winding_test(0);
state(&state_stack.back()),
vertex_array(0),
vertex_array_changed(false),
state(&state_stack.back()),
vertex_array(0),
vertex_array_changed(false),
- element_buffer(0),
- winding_test(0)
{
MatrixStack::modelview().push();
if(camera)
{
MatrixStack::modelview().push();
if(camera)
Material::unbind();
Program::unbind();
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
Material::unbind();
Program::unbind();
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
}
void Renderer::set_texture(const Texture *t)
}
void Renderer::set_texture(const Texture *t)
void Renderer::set_winding_test(const WindingTest *w)
{
void Renderer::set_winding_test(const WindingTest *w)
{
+ state->winding_test = w;
}
void Renderer::push_state()
}
void Renderer::push_state()
{
apply_state();
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
{
apply_state();
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
}
void Renderer::draw(const Batch &batch)
}
void Renderer::draw(const Batch &batch)
// Until VertexArray acquires VAO support and becomes Bindable
if(vertex_array_changed)
// Until VertexArray acquires VAO support and becomes Bindable
if(vertex_array_changed)
+ vertex_array_changed = false;
+ }
if(element_buffer)
element_buffer->bind_to(ELEMENT_ARRAY_BUFFER);
else
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
if(element_buffer)
element_buffer->bind_to(ELEMENT_ARRAY_BUFFER);
else
Buffer::unbind_from(ELEMENT_ARRAY_BUFFER);
- if(winding_test)
- winding_test->bind();
- else
- WindingTest::unbind();
-
+ if(state->winding_test)
+ state->winding_test->bind();
+ else
+ WindingTest::unbind();
+
if(mtx_changed)
{
MatrixStack::modelview() = mtx_stack.top();
if(mtx_changed)
{
MatrixStack::modelview() = mtx_stack.top();
texture(0),
texturing(0),
material(0),
texture(0),
texturing(0),
material(0),
+ shprog(0),
+ winding_test(0)
const Material *material;
const Program *shprog;
std::vector<const ProgramData *> shdata;
const Material *material;
const Program *shprog;
std::vector<const ProgramData *> shdata;
+ const WindingTest *winding_test;
const VertexArray *vertex_array;
bool vertex_array_changed;
const Buffer *element_buffer;
const VertexArray *vertex_array;
bool vertex_array_changed;
const Buffer *element_buffer;
- const WindingTest *winding_test;
public:
Renderer(const Camera *);
public:
Renderer(const Camera *);