Previously, everytime a object was created in the RenderDriver a message
was logged, e.g. "VkDevice created". These have been removed as they are
redundant as the opposite case (when warnings/errors occur) are always
logged. Aditionally, only enabled trace logging when Debug::is_debug()
returns true.
Temorarily added a color blend attachment to all pipelines created. This
is because, for now atleast, all pipelines are created using the
swapchain render pass, meaning they need atleast one color blend
attachment.
Fixed an issue where if there were more than one window, when they were
closed, the CLOSED event would trigger but the window count did not
decrease. This happened because after the window was destroyed the
DestroyNotify event was triggered, which when looked up in the m_windows
map, reinserted itself with default initialization.
This will likely require significant rework but it will do for now. A
considerations worth thinking about:
- What happends when the WindowDriver destroys a window, what happens to
the corresponding surface?
Hopefully the last time I change my mind on what I want these to be
called. Reason behind this change is to minimize scope of a single
module. The WindowDriver should really only handle stuff related to
windows. If we need OS level functionality (e.g. get_os_name), that
should be the responsibility of the OS driver (or whatever that ends
being called). Remember, composition over inheritance.
All functions that the create/destroy a global static singleton should
use the names init and shutdown, while any static functions that
return/take a new object should use the names create and destroy.
e.g.
void Renderer::init() and void Renderer::shutdown()
Window* Window::create() and void Window::destroy(Window* window)