#include <vector>
#include <msp/core/refptr.h>
#include <msp/datafile/loader.h>
+#include "primitivetype.h"
#include "types.h"
#include "vertexarraybuilder.h"
#include "vertexformat.h"
class VertexArray
{
+ friend class VertexArrayBuilder;
+
public:
class Loader: public DataFile::Loader, public VertexArrayBuilder
{
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();
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;