]> git.tdb.fi Git - libs/gl.git/blobdiff - source/vertexsetup.h
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / vertexsetup.h
index 9e7409ac64b71f3574a32c778964089e21bdf3bf..bae4c5f36c2245d194eacc6b08b1df25658dade7 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_GL_VERTEXSETUP_H_
 
 #include "bindable.h"
+#include "vertexformat.h"
 
 namespace Msp {
 namespace GL {
@@ -19,13 +20,17 @@ private:
        {
                VERTEX_ARRAY = 1,
                INSTANCE_ARRAY = 2,
-               INDEX_BUFFER = 4
+               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:
@@ -35,11 +40,14 @@ public:
        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;