Update and improve documentation
Use default member initializers for simple types Also mark special member functions as defaulted instead of defining them as empty.
Move all OpenGL-specific code to a separate directory
Refactor VertexSetup format checking
Use friend declarations to access OpenGL IDs of objects This seems neater than exposing get_id() methods to the public. Texture2D::AsyncLoader still uses get_id() on the PBO for now, since it's not reasonably possible to name that class as a friend.
Add support for integer vertex attributes
Store index type in VertexSetup
Remove the Bindable class It's no longer used anywere
Rewrite state management Global bindings have been removed from the central classes (and will be removed from others soon) since those would translate poorly to Vulkan. Instead a new PipelineState class is used to tie all of the state together and apply it at once.
Only allow VertexArray's format to be set once Also affects related classes like VertexSetup and Mesh. This will make state management with Vulkan easier.
Clear VertexSetup state when a Mesh is unloaded
Set OpenGL debug labels on various objects loaded from Resources
Move checking of vertex attribute indices to VertexSetup This avoids issues when loading meshes with ResourceManager, since it's not possible to read the value of GL_MAX_VERTEX_ATTRIBS from the loading thread.
Rearrange soucre files into subdirectories