X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fvertexformat.h;h=e8ba702db1746c4c4b0ec5357f0f13fe6bf4fc77;hp=d5835013b53a925584bbfa8055a663f1f1382ed4;hb=HEAD;hpb=190a7e11237351f6b730c28f7b16f183e8adc69c diff --git a/source/core/vertexformat.h b/source/core/vertexformat.h index d5835013..e8ba702d 100644 --- a/source/core/vertexformat.h +++ b/source/core/vertexformat.h @@ -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