-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007-2010 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_GL_VERTEXARRAY_H_
#define MSP_GL_VERTEXARRAY_H_
VertexFormat format;
std::vector<float> data;
unsigned stride;
- Buffer *vbuf;
- bool own_vbuf;
+ RefPtr<Buffer> vbuf;
+ bool defer_vbuf;
+ mutable bool dirty;
+
+ static ArrayMask enabled_arrays;
VertexArray(const VertexArray &);
VertexArray &operator=(const VertexArray &);
void clear();
void reset(const VertexFormat &);
void apply() const;
- void update_data();
float *append();
- float *operator[](unsigned i) { return &data[0]+i*stride; }
+ float *modify(unsigned);
const float *operator[](unsigned i) const { return &data[0]+i*stride; }
private:
- static ArrayMask enabled_arrays;
+ void set_dirty();
};
void array_element(int);