#ifndef MSP_GL_VERTEXSETUP_H_
#define MSP_GL_VERTEXSETUP_H_
-#include "bindable.h"
+#include "datatype.h"
#include "vertexformat.h"
namespace Msp {
*/
class VertexSetup
{
+ friend class PipelineState;
+
private:
enum ComponentMask
{
const VertexArray *inst_array;
VertexFormat inst_format;
const Buffer *index_buffer;
+ DataType index_type;
public:
VertexSetup();
void set_vertex_array(const VertexArray &);
void set_instance_array(const VertexArray &);
- void set_index_buffer(const Buffer &);
+ void set_index_buffer(const Buffer &, DataType);
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; }
+ DataType get_index_type() const { return index_type; }
private:
static bool verify_format(const VertexFormat &);
+ static void require_format(const VertexFormat &);
void update() const;
void update_vertex_array(const VertexArray &, unsigned, unsigned, bool) const;
public:
void refresh() const { if(dirty) update(); }
- unsigned get_id() const { return id; }
-
void unload();
void set_debug_name(const std::string &);