Extended pipeline to support adding vertex bindings
Vertex bindings can now be added via a template function that assumes that the type implements the following;
- A function matching the signature of PFN_GetVertexInputBindingDescription and with the name get_binding_description
- A function matching the signature of PFN_GetVertexAttributeDescriptions and with the name get_attribute_descriptions
GetVertexAttributeDescriptions should set the num_attachments to the number of attachments if and only if the attachment output pointer is nullptr. If the output pointer is not nullptr, num_attachments should be treated as a size. Return VK_SUCCESS on success, or a different value otherwise.
Swapchain is now capable of being recreated in a partially automatic manner (some effort is still required on the developer's side still)
Windows are now allowed to be resizeable
Updated main program to support resizable windows
Added a very basic window object that essentially just wraps an GLFW window object.
TODO: Set the window userdata pointer to point to its wrapping object