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. */
+/** A single vertex attribute. Commonly used attributes are named by their
+semantical meaning in the standard shaders. Texture coordinates and generic
+attributes can additionally be given an index. There are four texture
+coordinate attributes available. The number of available generic attributes
+depends on implementation limits, but is at least five.
+
+RAW_ATTRIB is handled in a special way; creating an indexed attribute based on
+it uses the index as raw attribute number. Only use it if you know what you
+are doing. */
enum VertexAttribute
{
VERTEX2 = 1,
VERTEX3,
VERTEX4,
- NORMAL3 = 10,
- COLOR4_UBYTE = 12,
- COLOR3_FLOAT = 14,
+ COLOR4_UBYTE = 8,
+ COLOR3_FLOAT = 10,
COLOR4_FLOAT,
- TANGENT3 = 18,
- BINORMAL3 = 22,
- TEXCOORD1 = 32,
+ NORMAL3 = 18,
+ TANGENT3 = 26,
+ BINORMAL3 = 34,
+ GROUP1 = 40,
+ GROUP2,
+ GROUP3,
+ GROUP4,
+ WEIGHT1 = 48,
+ WEIGHT2,
+ WEIGHT3,
+ WEIGHT4,
+ TEXCOORD1 = 56,
TEXCOORD2,
TEXCOORD3,
TEXCOORD4,
- ATTRIB1 = 64,
- ATTRIB2,
- ATTRIB3,
- ATTRIB4
+ GENERIC1 = 88,
+ GENERIC2,
+ GENERIC3,
+ GENERIC4,
+ RAW_ATTRIB1 = 248,
+ RAW_ATTRIB2,
+ RAW_ATTRIB3,
+ RAW_ATTRIB4
};
DEPRECATED typedef VertexAttribute VertexComponent;
{ return make_indexed_attribute(a, i); }
inline unsigned get_attribute_semantic(unsigned char a)
-{ return a>>2; }
+{ return a>>3; }
inline unsigned get_attribute_size(unsigned char a)
{ return (a&3)+1; }