## Methods
TODO
## Fields
```cs
// Set this to true BEFORE mapping the buffer, to map it persistently
// Will not work if GLFeatures.PersistentBuffersAvailable is false
public bool persistent;
// How much data hasbeen populated
public int used;
// True if this buffer has no CPU-side data
public bool hasNoData;
// Whether the CPU-side data has been modified since we last buffered data to the GPU. If true, data will be automatically buffered when calling BindAndDraw()
public bool dirty;
// The size of the vertex in bytes
public uint VERTEX_SIZE;
// The underlying OpenGL VBO handle
public uint vboHandle;
// The underlying OpenGL VAO handle
public uint vaoHandle;
// The usage hint that's sent to OpenGL when buffering data
public BufferUsageARB usage = BufferUsageARB.StaticDraw;
// The primitive type used by BindAndDraw();
public PrimitiveType primitiveType = PrimitiveType.Triangles;
// The number of vertices in this buffer
public int bufferLength;
// The internal variables used by SetAttrib() to keep track of the current attribute position. These variables are protected, so that InstanceBuffers that attach onto an existing VertexBuffer can use the correct attribute location
protected uint attribID;
protected int attribOffset;
```
## Read-Only Fields
```cs
// True if the upload fence has signaled
public bool UploadComplete;
// True if the upload has started AND is in progress
public bool IsUploading;
// True if the buffer is mapped
public bool Mapped;
// How many bytes of vertex data have been written on the CPU-side so far
protected uint UsedBytes;
// The size of the OpenGL buffer in bytes
protected uint BufferBytes;
// True if the VAO and VBO have been created
public bool Initialised;
// True if we've ever buffered data to the GPU
public bool EverBuffered;
```