#include <vector>
#include <msp/core/refptr.h>
#include <msp/datafile/loader.h>
+#include "primitivetype.h"
#include "types.h"
#include "vertexarraybuilder.h"
#include "vertexformat.h"
Loader(VertexArray &);
};
+private:
+ VertexFormat format;
+ std::vector<float> data;
+ uint stride;
+ VertexBuffer *vbuf;
+ bool own_vbuf;
+
+ VertexArray(const VertexArray &);
+ VertexArray &operator=(const VertexArray &);
+public:
VertexArray(VertexFormat);
~VertexArray();
const std::vector<float> &get_data() const { return data; }
void use_vertex_buffer();
void use_vertex_buffer(VertexBuffer *);
+ void reserve(unsigned);
+ unsigned size() const { return data.size()/stride; }
void clear();
void reset(VertexFormat);
- RefPtr<VertexArrayBuilder> modify();
void apply() const;
void update_data();
+ float *append();
+ float *operator[](unsigned i) { return &data[0]+i*stride; }
+ const float *operator[](unsigned i) const { return &data[0]+i*stride; }
private:
- VertexFormat format;
- std::vector<float> data;
- uint stride;
- VertexBuffer *vbuf;
- bool own_vbuf;
-
- VertexArray(const VertexArray &);
- VertexArray &operator=(const VertexArray &);
void set_array(unsigned, unsigned, unsigned) const;
static unsigned enabled_arrays;