X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fvertexformat.h;h=bcb5b9251ebc73468237e83f2065f9c6a62187ed;hb=b13f1bced27e0ad3e4661e645f6bafed38359120;hp=4c343c99e60f2def0d13571213d71da5ddef132b;hpb=8e9d872c2ba8dc633d29a673ba93adf38d262a5c;p=libs%2Fgl.git diff --git a/source/vertexformat.h b/source/vertexformat.h index 4c343c99..bcb5b925 100644 --- a/source/vertexformat.h +++ b/source/vertexformat.h @@ -6,9 +6,9 @@ namespace Msp { namespace GL { -/** A single vertex component. Nvidia drivers have aliasing between the -fixed-functions and generic vertex attributes, despite the standard not -allowing it. We use the same attribute indices here to avoid problems. */ +/** 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, @@ -33,21 +33,21 @@ enum VertexComponent class VertexFormat { private: - unsigned char *data; + enum { MAX_COMPONENTS = 15 }; + + unsigned char count; + unsigned char components[MAX_COMPONENTS]; public: VertexFormat(); VertexFormat(VertexComponent); - VertexFormat(const VertexFormat &); - VertexFormat &operator=(const VertexFormat &); - ~VertexFormat(); VertexFormat operator,(VertexComponent c) const; VertexFormat operator,(unsigned i) const; - bool empty() const { return !data || !data[0]; } - const unsigned char *begin() const { return data ? data+1 : 0; } - const unsigned char *end() const { return data ? data+1+data[0] : 0; } + 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; };