X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fvertexsetup.h;h=756f5bc03644990990aafb1f360c1cebb9b6bfe0;hb=73567be7cd9e01e620cb2a8fa0ca381723b9a71f;hp=3b18006af04918661150d285ea6563664db51b32;hpb=d40673bd28c4b4524d3642b949d9d109dc6f9f24;p=libs%2Fgl.git diff --git a/source/core/vertexsetup.h b/source/core/vertexsetup.h index 3b18006a..756f5bc0 100644 --- a/source/core/vertexsetup.h +++ b/source/core/vertexsetup.h @@ -1,19 +1,20 @@ #ifndef MSP_GL_VERTEXSETUP_H_ #define MSP_GL_VERTEXSETUP_H_ -#include "bindable.h" +#include "datatype.h" #include "vertexformat.h" namespace Msp { namespace GL { +class Buffer; class VertexArray; /** Combines a VertexArray with an index buffer. This wraps OpenGL's vertex array objects. Intended for internal use. */ -class VertexSetup: public Bindable +class VertexSetup { private: enum ComponentMask @@ -30,6 +31,7 @@ private: const VertexArray *inst_array; VertexFormat inst_format; const Buffer *index_buffer; + DataType index_type; public: VertexSetup(); @@ -40,19 +42,21 @@ public: 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 &); - void update(unsigned) const; + void update() const; void update_vertex_array(const VertexArray &, unsigned, unsigned, bool) const; public: - void bind() const; - static void unbind(); + void refresh() const { if(dirty) update(); } + + unsigned get_id() const { return id; } void unload();