## 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; ```