namespace Msp {
namespace GL {
+VertexArray::VertexArray():
+ stride(0)
+{ }
+
VertexArray::VertexArray(const VertexFormat &f)
{
- reset(f);
+ set_format(f);
}
-void VertexArray::reset(const VertexFormat &f)
+void VertexArray::set_format(const VertexFormat &f)
{
- clear();
+ if(!format.empty())
+ throw invalid_operation("VertexArray::set_format");
format = f;
stride = format.stride();
}
void VertexArray::reserve(unsigned n)
{
+ if(format.empty())
+ throw invalid_operation("VertexArray::reserve");
data.reserve(n*stride);
}
float *VertexArray::append()
{
+ if(format.empty())
+ throw invalid_operation("VertexArray::append");
data.insert(data.end(), stride, 0.0f);
update_offset();
dirty = true;
float *VertexArray::modify(unsigned i)
{
+ if(format.empty())
+ throw invalid_operation("VertexArray::modify");
dirty = true;
return &data[0]+i*stride;
}
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("tangent", static_cast<void (Loader::*)(float, float, float)>(&Loader::tangent));
- add("binormal", static_cast<void (Loader::*)(float, float, float)>(&Loader::binormal));
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("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("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