]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/vertexformat.h
Rearrange vertex attributes
[libs/gl.git] / source / core / vertexformat.h
index 3317a015d1ce195f0793fca816159a415a6f0b7c..93794c353cafcb24027253ac2491cf59ef6e731b 100644 (file)
@@ -7,28 +7,39 @@
 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,
+       // Attributes 5 and 6 reserved for vertex groups and weights
+       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;
@@ -69,7 +80,7 @@ DEPRECATED inline VertexAttribute make_indexed_component(VertexAttribute a, unsi
 { 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; }