Commit 9ec3f283

– preliminary support for dynamic uniform buffers
– make the renderer support starting up without any meshes to render

In addition to the regular uniform buffers, this commit added dynamic uniform buffers to every model created on the renderer. These were later used for updating information specific to a model on a per-frame basis, such as rotation and position.
Furthermore this commit allowed OLives to start without any meshes loaded by injecting dummy data into the renderer until a proper mesh is loaded.

Commit 240402c0

make the project compile with a more recent vulkanhpp version. actually read vertex and index dimensions from the model manager

This one was not a lot of fun, a newer version of vulkanhpp, the C++ wrapper around the native C Vulkan API, was released and introduced a few changes. A lack of user-friendly documentation made the switch more painful than first expected.
On a more positive note, the model data was now fully loaded from the ModelManager and dynamic.

Commit 8212b8b9

add the first part of the WiP model concept, currently broken

This introduces the ModelManager, a class that can load arbitrary models as well as caching data about already loaded models, so requesting the same model twice will not result in the same model being loaded more than once.
In this state the code was already added, but broke the build, also even if it worked, it would have been unused by the renderer, which was still using hardcoded model references.

Commit 1fe9819e

implement the first iteration of the logger

This introduces the logger, the main features are different logging levels (Normal, Error and Debug) as well as automatic logging into stdout/stderr respectively as well as into a main logging file (olives.log) for the Normal/Debug messages and an error file (olives.err.log) for the Error type log entries. Using it looks something like this:

std::string message = “Renderer: Could not create logical device”;
logger->logError(message);
throw std::runtime_error(message);