2 #include "vertexarray.h"
9 VertexArray::VertexArray():
13 VertexArray::VertexArray(const VertexFormat &f)
18 void VertexArray::set_format(const VertexFormat &f)
21 throw invalid_operation("VertexArray::set_format");
23 stride = format.stride();
26 void VertexArray::clear()
31 void VertexArray::reserve(unsigned n)
34 throw invalid_operation("VertexArray::reserve");
35 data.reserve(n*stride);
38 char *VertexArray::append()
41 throw invalid_operation("VertexArray::append");
42 data.insert(data.end(), stride, 0.0f);
45 return &*(data.end()-stride);
48 char *VertexArray::modify(unsigned i)
51 throw invalid_operation("VertexArray::modify");
53 return &data[0]+i*stride;
56 unsigned VertexArray::get_data_size() const
62 VertexArray::Loader::Loader(VertexArray &a):
65 add("vertex", static_cast<void (Loader::*)(float, float)>(&Loader::vertex));
66 add("vertex", static_cast<void (Loader::*)(float, float, float)>(&Loader::vertex));
67 add("vertex", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::vertex));
68 add("normal", static_cast<void (Loader::*)(float, float, float)>(&Loader::normal));
69 add("tangent", static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
70 add("texcoord", static_cast<void (Loader::*)(float)>(&Loader::texcoord));
71 add("texcoord", static_cast<void (Loader::*)(float, float)>(&Loader::texcoord));
72 add("texcoord", static_cast<void (Loader::*)(float, float, float)>(&Loader::texcoord));
73 add("texcoord", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::texcoord));
74 add("multitexcoord", static_cast<void (Loader::*)(unsigned, float)>(&Loader::multitexcoord));
75 add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::multitexcoord));
76 add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::multitexcoord));
77 add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::multitexcoord));
78 add("color", static_cast<void (Loader::*)(float, float, float)>(&Loader::color));
79 add("color", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::color));
80 add("generic", static_cast<void (Loader::*)(unsigned, float)>(&Loader::generic));
81 add("generic", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::generic));
82 add("generic", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::generic));
83 add("generic", static_cast<void (Loader::*)(unsigned, float, float, float, float)>(&Loader::generic));
84 add("group", static_cast<void (Loader::*)(int)>(&Loader::group));
85 add("group", static_cast<void (Loader::*)(int, int)>(&Loader::group));
86 add("group", static_cast<void (Loader::*)(int, int, int)>(&Loader::group));
87 add("group", static_cast<void (Loader::*)(int, int, int, int)>(&Loader::group));
88 add("weight", static_cast<void (Loader::*)(float)>(&Loader::weight));
89 add("weight", static_cast<void (Loader::*)(float, float)>(&Loader::weight));
90 add("weight", static_cast<void (Loader::*)(float, float, float)>(&Loader::weight));
91 add("weight", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::weight));