]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/vertexarray.cpp
Make VertexFormat capable of storing type information
[libs/gl.git] / source / core / vertexarray.cpp
index 2bb6a6677b9ef5e2099a1a5922b1d2990910708c..a13d79cc6b0abd3e0c42362b24dc56fc14e05d27 100644 (file)
@@ -40,7 +40,7 @@ void VertexArray::reserve(unsigned n)
        data.reserve(n*stride);
 }
 
-float *VertexArray::append()
+char *VertexArray::append()
 {
        if(format.empty())
                throw invalid_operation("VertexArray::append");
@@ -50,7 +50,7 @@ float *VertexArray::append()
        return &*(data.end()-stride);
 }
 
-float *VertexArray::modify(unsigned i)
+char *VertexArray::modify(unsigned i)
 {
        if(format.empty())
                throw invalid_operation("VertexArray::modify");
@@ -60,7 +60,7 @@ float *VertexArray::modify(unsigned i)
 
 unsigned VertexArray::get_data_size() const
 {
-       return data.size()*sizeof(float);
+       return data.size();
 }
 
 
@@ -71,6 +71,7 @@ VertexArray::Loader::Loader(VertexArray &a):
        add("vertex", static_cast<void (Loader::*)(float, float, float)>(&Loader::vertex));
        add("vertex", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::vertex));
        add("normal", static_cast<void (Loader::*)(float, float, float)>(&Loader::normal));
+       add("tangent", static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
        add("texcoord", static_cast<void (Loader::*)(float)>(&Loader::texcoord));
        add("texcoord", static_cast<void (Loader::*)(float, float)>(&Loader::texcoord));
        add("texcoord", static_cast<void (Loader::*)(float, float, float)>(&Loader::texcoord));
@@ -93,33 +94,6 @@ VertexArray::Loader::Loader(VertexArray &a):
        add("weight", static_cast<void (Loader::*)(float, float)>(&Loader::weight));
        add("weight", static_cast<void (Loader::*)(float, float, float)>(&Loader::weight));
        add("weight", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::weight));
-
-       // Deprecated
-       add("vertex2",   static_cast<void (Loader::*)(float, float)>(&Loader::vertex));
-       add("vertex3",   static_cast<void (Loader::*)(float, float, float)>(&Loader::vertex));
-       add("vertex4",   static_cast<void (Loader::*)(float, float, float, float)>(&Loader::vertex));
-       add("normal3",   static_cast<void (Loader::*)(float, float, float)>(&Loader::normal));
-       add("texcoord1", static_cast<void (Loader::*)(float)>(&Loader::texcoord));
-       add("texcoord2", static_cast<void (Loader::*)(float, float)>(&Loader::texcoord));
-       add("texcoord3", static_cast<void (Loader::*)(float, float, float)>(&Loader::texcoord));
-       add("texcoord4", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::texcoord));
-       add("multitexcoord1", static_cast<void (Loader::*)(unsigned, float)>(&Loader::multitexcoord));
-       add("multitexcoord2", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::multitexcoord));
-       add("multitexcoord3", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::multitexcoord));
-       add("multitexcoord4", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::multitexcoord));
-       add("color3",    static_cast<void (Loader::*)(float, float, float)>(&Loader::color));
-       add("color4",    static_cast<void (Loader::*)(float, float, float, float)>(&Loader::color));
-       add("generic1",  static_cast<void (Loader::*)(unsigned, float)>(&Loader::generic));
-       add("generic2",  static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::generic));
-       add("generic3",  static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::generic));
-       add("generic4",  static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::generic));
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-       add("tangent3",  static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
-       add("binormal3", static_cast<void (Loader::*)(float, float, float)>(&Loader::binormal));
-       add("tangent", static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
-       add("binormal", static_cast<void (Loader::*)(float, float, float)>(&Loader::binormal));
-#pragma GCC diagnostic pop
 }
 
 } // namespace GL