]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/mesh.cpp
Refactor winding-based culling
[libs/gl.git] / source / core / mesh.cpp
index 492f416d1adeccb28e2abf3febfbe874a679abeb..4414a90e6577910e7881dee65877134e7cd1ba69 100644 (file)
@@ -31,7 +31,7 @@ void Mesh::init(ResourceManager *rm)
        ibuf = 0;
        dirty = 0;
        disallow_rendering = false;
-       winding = 0;
+       face_winding = NON_MANIFOLD;
 
        if(rm)
                set_manager(rm);
@@ -149,9 +149,9 @@ void Mesh::add_batch(const Batch &b)
        check_buffers(INDEX_BUFFER);
 }
 
-void Mesh::set_winding(const WindingTest *w)
+void Mesh::set_winding(FaceWinding w)
 {
-       winding = w;
+       face_winding = w;
 }
 
 void Mesh::draw(Renderer &renderer) const
@@ -183,7 +183,7 @@ void Mesh::draw(Renderer &renderer, const VertexSetup *vs, unsigned count) const
                resize_buffers();
 
        renderer.set_vertex_setup(vs ? vs : &vtx_setup);
-       renderer.set_winding_test(winding);
+       renderer.set_front_face(face_winding);
 
        if(!count)
        {
@@ -256,7 +256,7 @@ Mesh::Loader::Loader(Mesh &m, bool g):
        add("storage",  &Loader::storage);
        add("vertices", &Loader::vertices);
        add("vertices", &Loader::vertices_with_format);
-       add("winding",  &Loader::winding);
+       add("winding",  &Mesh::face_winding);
 }
 
 void Mesh::Loader::storage(const vector<VertexAttribute> &a)
@@ -290,14 +290,6 @@ void Mesh::Loader::batch(PrimitiveType p)
        obj.add_batch(btc);
 }
 
-void Mesh::Loader::winding(FaceWinding w)
-{
-       if(w==CLOCKWISE)
-               obj.winding = &WindingTest::clockwise();
-       else if(w==COUNTERCLOCKWISE)
-               obj.winding = &WindingTest::counterclockwise();
-}
-
 
 Mesh::AsyncLoader::AsyncLoader(Mesh &m, IO::Seekable &i):
        mesh(m),