]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/vertexformat.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / vertexformat.h
index d5835013b53a925584bbfa8055a663f1f1382ed4..e8ba702db1746c4c4b0ec5357f0f13fe6bf4fc77 100644 (file)
@@ -61,6 +61,10 @@ enum VertexAttribute: std::uint16_t
        GENERIC_I2 = 0x28CA,
        GENERIC_I3 = 0x28CB,
        GENERIC_I4 = 0x28CC,
+       PADDING1 = 0xF811,
+       PADDING2 = 0xF812,
+       PADDING3 = 0xF813,
+       PADDING4 = 0xF814,
        RAW_ATTRIB1 = 0xFDC1,
        RAW_ATTRIB2 = 0xFDC2,
        RAW_ATTRIB3 = 0xFDC3,
@@ -76,9 +80,10 @@ Describes the attributes of a vertex.  Up to 15 attributes are allowed.
 */
 class VertexFormat
 {
-private:
-       enum { MAX_ATTRIBUTES = 15 };
+public:
+       static constexpr unsigned MAX_ATTRIBUTES = 15;
 
+private:
        std::uint8_t count = 0;
        VertexAttribute attributes[MAX_ATTRIBUTES];
 
@@ -92,6 +97,7 @@ public:
        bool operator==(const VertexFormat &) const;
        bool operator!=(const VertexFormat &other) const { return !(*this==other); }
 
+       unsigned size() const { return count; }
        bool empty() const { return !count; }
        const VertexAttribute *begin() const { return attributes; }
        const VertexAttribute *end() const { return attributes+count; }
@@ -133,9 +139,14 @@ inline unsigned get_attribute_size(VertexAttribute a)
 inline bool is_integer_attribute(VertexAttribute a)
 { return a&8; }
 
+inline bool is_padding(VertexAttribute a)
+{ return get_attribute_semantic(a)==get_attribute_semantic(PADDING1); }
+
 void operator>>(const LexicalConverter &, VertexAttribute &);
 
 } // namespace GL
 } // namespace Msp
 
+#include "vertexformat_backend.h"
+
 #endif