class VertexSetup: public Bindable<VertexSetup>
{
private:
+ enum ComponentMask
+ {
+ VERTEX_ARRAY = 1,
+ INSTANCE_ARRAY = 2,
+ INDEX_BUFFER = 4
+ };
+
unsigned id;
- mutable bool dirty;
- const VertexArray *array;
+ mutable unsigned dirty;
+ const VertexArray *vertex_array;
+ const VertexArray *inst_array;
const Buffer *index_buffer;
public:
~VertexSetup();
void set_vertex_array(const VertexArray &);
+ void set_instance_array(const VertexArray *);
void set_index_buffer(const Buffer &);
+ const VertexArray *get_vertex_array() const { return vertex_array; }
+ const VertexArray *get_instance_array() const { return inst_array; }
const Buffer *get_index_buffer() const { return index_buffer; }
private:
- void update() const;
+ void update(unsigned) const;
+ void update_vertex_array(const VertexArray &, unsigned, unsigned, bool) const;
public:
void bind() const;