1 #ifndef MSP_GL_VERTEXSETUP_H_
2 #define MSP_GL_VERTEXSETUP_H_
5 #include "vertexformat.h"
14 Combines a VertexArray with an index buffer. This wraps OpenGL's vertex array
15 objects. Intended for internal use.
19 friend class PipelineState;
30 mutable unsigned dirty;
31 const VertexArray *vertex_array;
32 VertexFormat vertex_format;
33 const VertexArray *inst_array;
34 VertexFormat inst_format;
35 const Buffer *index_buffer;
42 void set_format(const VertexFormat &);
43 void set_format_instanced(const VertexFormat &, const VertexFormat &);
45 void set_vertex_array(const VertexArray &);
46 void set_instance_array(const VertexArray &);
47 void set_index_buffer(const Buffer &, DataType);
48 const VertexArray *get_vertex_array() const { return vertex_array; }
49 const VertexArray *get_instance_array() const { return inst_array; }
50 const Buffer *get_index_buffer() const { return index_buffer; }
51 DataType get_index_type() const { return index_type; }
54 static bool verify_format(const VertexFormat &);
55 static void require_format(const VertexFormat &, bool);
57 void update_vertex_array(const VertexArray &, unsigned, unsigned, bool) const;
60 void refresh() const { if(dirty) update(); }
64 void set_debug_name(const std::string &);