X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fvertexformat.h;fp=source%2Fcore%2Fvertexformat.h;h=93794c353cafcb24027253ac2491cf59ef6e731b;hp=3317a015d1ce195f0793fca816159a415a6f0b7c;hb=68b74ce23dd20822b07d79dc25aa0a0a19ef27a5;hpb=ea7832c7c1ffab00cc1168bc8c41375fdd0eae86 diff --git a/source/core/vertexformat.h b/source/core/vertexformat.h index 3317a015..93794c35 100644 --- a/source/core/vertexformat.h +++ b/source/core/vertexformat.h @@ -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; }