X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderer.cpp;h=2680d9022e9edcfe128cffec1ba246397902cd72;hb=635d00bc1a9ba43ef1224681a14d0710a098cf87;hp=bfd446e9f42ccc30aa47306d26f6d535fe1b4ea9;hpb=90a26a1740d5843b60d07d9c39d8567bfed5189c;p=libs%2Fgl.git diff --git a/source/renderer.cpp b/source/renderer.cpp index bfd446e9..2680d902 100644 --- a/source/renderer.cpp +++ b/source/renderer.cpp @@ -16,6 +16,7 @@ Distributed under the LGPL #include "texture.h" #include "texturing.h" #include "vertexarray.h" +#include "windingtest.h" using namespace std; @@ -30,7 +31,8 @@ Renderer::Renderer(const Camera *c): state(&state_stack.back()), vertex_array(0), vertex_array_changed(false), - element_buffer(0) + element_buffer(0), + winding_test(0) { MatrixStack::modelview().push(); if(camera) @@ -101,6 +103,11 @@ void Renderer::set_element_buffer(const Buffer *b) element_buffer = b; } +void Renderer::set_winding_test(const WindingTest *w) +{ + winding_test = w; +} + void Renderer::push_state() { state_stack.push_back(state_stack.back()); @@ -123,6 +130,7 @@ void Renderer::escape() { apply_state(); Buffer::unbind_from(ELEMENT_ARRAY_BUFFER); + WindingTest::unbind(); } void Renderer::draw(const Batch &batch) @@ -141,6 +149,11 @@ void Renderer::draw(const Batch &batch) else Buffer::unbind_from(ELEMENT_ARRAY_BUFFER); + if(winding_test) + winding_test->bind(); + else + WindingTest::unbind(); + batch.draw(); }