public VertexBufferObject(EnableCap arrayType,
                                  BufferTarget target,
                                  BufferUsageHint usage,
                                  VertexPointerInfo pointer)
        {
            Buffer = new List <T>();

            this.ArrayType    = arrayType;
            this.BufferTarget = target;
            this.Pointer      = pointer;
            this.Usage        = usage;
        }
        static VertexBufferObject()
        {
            VertexAttribute attribute = GetAttribute <VertexAttribute>(typeof(T));

            if (attribute != null)
            {
                DefaultPointer = new VertexPointerInfo(attribute.CoordinateCount,
                                                       attribute.PointerType,
                                                       attribute.Stride,
                                                       attribute.Offset);
            }
        }