]> git.tdb.fi Git - libs/gl.git/blobdiff - source/primitivebuilder.cpp
Support multiple sets of texture coordinates in VertexArrays
[libs/gl.git] / source / primitivebuilder.cpp
index 6a4d9bf0b866ccd1585a68ef05acf9b1c42df682..22106a344a828326c7329c5f482bc2a230e56a92 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -21,8 +21,8 @@ void PrimitiveBuilder::begin(PrimitiveType t)
        if(in_batch)
                throw InvalidState("begin() already called");
 
-       type=t;
-       in_batch=true;
+       type = t;
+       in_batch = true;
 
        begin_();
 }
@@ -32,7 +32,7 @@ void PrimitiveBuilder::end()
        if(!in_batch)
                throw InvalidState("end() called without begin()");
 
-       in_batch=false;
+       in_batch = false;
 
        end_();
 }
@@ -55,9 +55,12 @@ PrimitiveType PrimitiveBuilder::get_type() const
 
 void PrimitiveBuilder::vertex_(float x, float y, float z, float w)
 {
-       vab.texcoord(ts, tt, tr,tq);
-       vab.color(cr, cg, cb, ca);
-       vab.normal(nx, ny, nz);
+       vab.color(col);
+       vab.normal(nor);
+       for(std::map<unsigned, Vector4>::iterator i=texc.begin(); i!=texc.end(); ++i)
+               vab.multitexcoord(i->first, i->second);
+       for(std::map<unsigned, Vector4>::iterator i=attr.begin(); i!=attr.end(); ++i)
+               vab.attrib(i->first, i->second);
        vab.vertex(x, y, z, w);
 
        if(in_batch)