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);