#include <msp/gl/extensions/arb_multitexture.h>
#include <msp/gl/extensions/arb_vertex_shader.h>
+#include <msp/gl/extensions/msp_legacy_features.h>
#include "buffer.h"
#include "error.h"
#include "gl.h"
if(!use_legacy)
static Require _req(ARB_vertex_shader);
+ else if(legacy)
+ static Require _req(MSP_legacy_features);
const VertexArray *old = current();
/* If the array has been modified, apply it even if it was the last one to
if(!set_current(this) && !dirty)
return;
- Buffer *vbuf = get_buffer();
+ const Buffer *vbuf = get_buffer();
Bind _bind_vbuf(vbuf, ARRAY_BUFFER);
if(vbuf && dirty)
update_buffer();
VertexArray::Loader::Loader(VertexArray &a):
VertexArrayBuilder(a)
{
+ add("vertex", static_cast<void (Loader::*)(float, float)>(&Loader::vertex));
+ 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("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));
+ add("texcoord", static_cast<void (Loader::*)(float, float, float, float)>(&Loader::texcoord));
+ add("multitexcoord", static_cast<void (Loader::*)(unsigned, float)>(&Loader::multitexcoord));
+ add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float)>(&Loader::multitexcoord));
+ add("multitexcoord", static_cast<void (Loader::*)(unsigned, float, float, float)>(&Loader::multitexcoord));
+ 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("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));