diff --git a/src/main.cpp b/src/main.cpp index 047f982..e3bd21b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -244,24 +244,24 @@ class VulkanApp { struct Camera { glm::dvec3 position; - glm::dvec3 front; glm::dvec3 up; + glm::dvec3 look_at; f64 speed {}; - Camera() : position(2.0, 2.0, 2.0), front(0.0, 0.0, 0.0), up(0.0, 0.0, 1.0) {} + Camera() : position(2.0, 2.0, 2.0), up(0.0, 0.0, 1.0), look_at(0.0) {} - [[nodiscard]] fn getViewMatrix() const -> glm::mat4 { return glm::lookAt(position, front, up); } + [[nodiscard]] fn getViewMatrix() const -> glm::mat4 { return glm::lookAt(position, look_at, up); } - fn moveForward(f64 deltaTime) -> void { position += speed * front * deltaTime; } + fn moveForward(f64 deltaTime) -> void { position += (look_at - position) * deltaTime; } - fn moveBackward(f64 deltaTime) -> void { position -= speed * front * deltaTime; } + fn moveBackward(f64 deltaTime) -> void { position -= (look_at - position) * deltaTime; } fn moveLeft(f64 deltaTime) -> void { - position -= glm::normalize(glm::cross(front, up)) * speed * deltaTime; + position -= glm::normalize(glm::cross((look_at - position), up)) * deltaTime; } fn moveRight(f64 deltaTime) -> void { - position += glm::normalize(glm::cross(front, up)) * speed * deltaTime; + position += glm::normalize(glm::cross((look_at - position), up)) * deltaTime; } }; diff --git a/src/util/shaders.hpp b/src/util/shaders.hpp index 3c33dbe..13b23b7 100644 --- a/src/util/shaders.hpp +++ b/src/util/shaders.hpp @@ -50,7 +50,7 @@ class ShaderCompiler { throw runtime_error("Shader compilation failed for: " + shaderName); // Cache the compiled SPIR-V binary - saveCompiledShader(spirvCode, cacheFile); + saveCompiledShader(spirvCode, cacheFile.string()); return spirvCode; } diff --git a/src/util/unique_image.hpp b/src/util/unique_image.hpp index 92c7af4..622fe9a 100644 --- a/src/util/unique_image.hpp +++ b/src/util/unique_image.hpp @@ -19,7 +19,7 @@ namespace stb { * * @param path The filesystem path to the image file to load. */ - UniqueImage(const std::filesystem::path& path) { load(path.c_str()); } + UniqueImage(const std::filesystem::path& path) { load(path.string().c_str()); } // Deleted copy constructor to prevent copying. UniqueImage(const UniqueImage&) = delete;