X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fvertexsetup.h;h=7daef8845ac03688c570af5c40ff10f8a80324dc;hb=be92396630a2065e43c21d9d1904e97014844cff;hp=7eb903aeae9f819e43258c0b510bfebba638c73f;hpb=715672cf2c64dab0744db676fdee255ee3a4cef7;p=libs%2Fgl.git diff --git a/source/core/vertexsetup.h b/source/core/vertexsetup.h index 7eb903ae..7daef884 100644 --- a/source/core/vertexsetup.h +++ b/source/core/vertexsetup.h @@ -1,7 +1,9 @@ #ifndef MSP_GL_VERTEXSETUP_H_ #define MSP_GL_VERTEXSETUP_H_ +#include "datatype.h" #include "vertexformat.h" +#include "vertexsetup_backend.h" namespace Msp { namespace GL { @@ -13,8 +15,10 @@ class VertexArray; Combines a VertexArray with an index buffer. This wraps OpenGL's vertex array objects. Intended for internal use. */ -class VertexSetup +class VertexSetup: public VertexSetupBackend { + friend VertexSetupBackend; + private: enum ComponentMask { @@ -23,41 +27,38 @@ private: INDEX_BUFFER = 4 }; - unsigned id; mutable unsigned dirty; const VertexArray *vertex_array; VertexFormat vertex_format; const VertexArray *inst_array; VertexFormat inst_format; const Buffer *index_buffer; + DataType index_type; public: VertexSetup(); - ~VertexSetup(); void set_format(const VertexFormat &); void set_format_instanced(const VertexFormat &, const VertexFormat &); 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() 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 &); + using VertexSetupBackend::set_debug_name; }; } // namespace GL