]> git.tdb.fi Git - libs/gl.git/blobdiff - source/primitivebuilder.cpp
Support specifying elements in PrimitiveBuilder
[libs/gl.git] / source / primitivebuilder.cpp
index e461cf211bf77f2fe79b7f25b67a579c2d99fca3..92b2cb0eb0b76ef97c73875bd00f14651409c3b8 100644 (file)
@@ -38,6 +38,15 @@ void PrimitiveBuilder::end()
        end_();
 }
 
+void PrimitiveBuilder::element(unsigned i)
+{
+       if(!in_batch)
+               throw InvalidState("Element specification not between begin() and end()");
+       if(i>=array.size())
+               throw InvalidParameterValue("Element index out of range");
+       element_(i);
+}
+
 PrimitiveType PrimitiveBuilder::get_type() const
 {
        if(!in_batch)
@@ -47,13 +56,13 @@ PrimitiveType PrimitiveBuilder::get_type() const
 
 void PrimitiveBuilder::vertex_(float x, float y, float z, float w)
 {
-       if(!in_batch)
-               throw InvalidState("Vertex specification not between begin() and end()");
-
        builder->texcoord(ts, tt, tr,tq);
        builder->color(cr, cg, cb, ca);
        builder->normal(nx, ny, nz);
        builder->vertex(x, y, z, w);
+
+       if(in_batch)
+               element_(array.size()-1);
 }
 
 } // namespace GL