]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/vertexarray.cpp
Include only tangent in mesh data and calculate binormal on the fly
[libs/gl.git] / source / core / vertexarray.cpp
index e3aef7a0eea16cd38302d068535edaa255c56028..347e42595a1387bf7630a87344a6dc96f7425ac3 100644 (file)
@@ -20,7 +20,7 @@ void VertexArray::reset(const VertexFormat &f)
 {
        clear();
        format = f;
-       stride = get_stride(format);
+       stride = format.stride();
 }
 
 void VertexArray::clear()
@@ -70,13 +70,20 @@ VertexArray::Loader::Loader(VertexArray &a):
        add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::multitexcoord));
        add("color", static_cast<void (Loader::*)(float, float, float)>(&Loader::color));
        add("color", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::color));
-       add("attrib", static_cast<void (Loader::*)(unsigned, float)>(&Loader::attrib));
-       add("attrib", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::attrib));
-       add("attrib", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::attrib));
-       add("attrib", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::attrib));
-       add("tangent", static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
-       add("binormal", static_cast<void (Loader::*)(float, float, float)>(&Loader::binormal));
+       add("generic", static_cast<void (Loader::*)(unsigned, float)>(&Loader::generic));
+       add("generic", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::generic));
+       add("generic", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::generic));
+       add("generic", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::generic));
+       add("group", static_cast<void (Loader::*)(int)>(&Loader::group));
+       add("group", static_cast<void (Loader::*)(int, int)>(&Loader::group));
+       add("group", static_cast<void (Loader::*)(int, int, int)>(&Loader::group));
+       add("group", static_cast<void (Loader::*)(int, int, int, int)>(&Loader::group));
+       add("weight", static_cast<void (Loader::*)(float)>(&Loader::weight));
+       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));
@@ -91,12 +98,17 @@ VertexArray::Loader::Loader(VertexArray &a):
        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("attrib1",   static_cast<void (Loader::*)(unsigned, float)>(&Loader::attrib));
-       add("attrib2",   static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::attrib));
-       add("attrib3",   static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::attrib));
-       add("attrib4",   static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::attrib));
+       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