+++ /dev/null
-#ifndef MSP_GL_VERTEXSETUP_H_
-#define MSP_GL_VERTEXSETUP_H_
-
-#include "bindable.h"
-#include "vertexformat.h"
-
-namespace Msp {
-namespace GL {
-
-class VertexArray;
-
-/**
-Combines a VertexArray with an index buffer. This wraps OpenGL's vertex array
-objects. Intended for internal use.
-*/
-class VertexSetup: public Bindable<VertexSetup>
-{
-private:
- enum ComponentMask
- {
- VERTEX_ARRAY = 1,
- INSTANCE_ARRAY = 2,
- INDEX_BUFFER = 4,
- UNUSED_ATTRIBS = 8,
- ATTRIB_SHIFT = 4
- };
-
- unsigned id;
- mutable unsigned dirty;
- const VertexArray *vertex_array;
- VertexFormat vertex_format;
- const VertexArray *inst_array;
- VertexFormat inst_format;
- const Buffer *index_buffer;
-
-public:
- VertexSetup();
- ~VertexSetup();
-
- void set_vertex_array(const VertexArray &);
- void set_instance_array(const VertexArray *);
- void set_index_buffer(const Buffer &);
- void refresh();
- 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:
- static unsigned get_attribs(const VertexFormat &);
- static unsigned get_update_mask(unsigned, const VertexFormat &, const VertexArray &);
- void update(unsigned) const;
- void update_vertex_array(const VertexArray &, unsigned, unsigned, bool) const;
-
-public:
- void bind() const;
- static void unbind();
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif