+++ /dev/null
-#ifndef MSP_GL_VERTEXFORMAT_H_
-#define MSP_GL_VERTEXFORMAT_H_
-
-#include <msp/strings/lexicalcast.h>
-
-namespace Msp {
-namespace GL {
-
-/** A single vertex component. Symbolic names are provided for commonly used
-attributes. These are aliased with with generic attributes, so be careful when
-picking your attribute indices. */
-enum VertexComponent
-{
- VERTEX2 = 1,
- VERTEX3,
- VERTEX4,
- NORMAL3 = 10,
- COLOR4_UBYTE = 12,
- COLOR3_FLOAT = 14,
- COLOR4_FLOAT,
- TANGENT3 = 18,
- BINORMAL3 = 22,
- TEXCOORD1 = 32,
- TEXCOORD2,
- TEXCOORD3,
- TEXCOORD4,
- ATTRIB1 = 64,
- ATTRIB2,
- ATTRIB3,
- ATTRIB4
-};
-
-class VertexFormat
-{
-private:
- enum { MAX_COMPONENTS = 15 };
-
- unsigned char count;
- unsigned char components[MAX_COMPONENTS];
-
-public:
- VertexFormat();
- VertexFormat(VertexComponent);
-
- VertexFormat operator,(VertexComponent c) const;
- VertexFormat operator,(unsigned i) const;
- bool operator==(const VertexFormat &) const;
- bool operator!=(const VertexFormat &other) const { return !(*this==other); }
-
- bool empty() const { return !count; }
- const unsigned char *begin() const { return components; }
- const unsigned char *end() const { return components+count; }
- unsigned stride() const;
- int offset(VertexComponent) const;
-};
-
-inline VertexFormat operator,(VertexComponent c1, VertexComponent c2)
-{ return (VertexFormat(c1), c2); }
-
-inline VertexFormat operator,(VertexComponent c, unsigned i)
-{ return (VertexFormat(c), i); }
-
-VertexComponent make_indexed_component(VertexComponent, unsigned);
-
-inline unsigned get_component_type(unsigned char c)
-{ return c>>2; }
-
-inline unsigned get_component_size(unsigned char c)
-{ return (c&3)+1; }
-
-inline unsigned get_stride(const VertexFormat &f)
-{ return f.stride(); }
-
-void operator>>(const LexicalConverter &, VertexComponent &);
-
-} // namespace GL
-} // namespace Msp
-
-#endif