From da307b6b0220c2ccfcac18fd9d6b0c6f1b1c635a Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sat, 26 Jun 2021 19:28:56 +0200 Subject: [PATCH] [#69] Fixed crash because of local scope reference Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- modules/camera/include/vkcv/camera/Camera.hpp | 2 +- modules/camera/src/vkcv/camera/Camera.cpp | 4 ++-- projects/particle_simulation/src/main.cpp | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/camera/include/vkcv/camera/Camera.hpp b/modules/camera/include/vkcv/camera/Camera.hpp index dc9f2dcb..0d078fef 100644 --- a/modules/camera/include/vkcv/camera/Camera.hpp +++ b/modules/camera/include/vkcv/camera/Camera.hpp @@ -77,7 +77,7 @@ namespace vkcv::camera { * @brief Gets the current projection of the camera * @return The current projection matrix */ - const glm::mat4& getProjection() const; + glm::mat4 getProjection() const; /** * @brief Gets the model-view-projection matrix of the camera with y-axis-correction applied diff --git a/modules/camera/src/vkcv/camera/Camera.cpp b/modules/camera/src/vkcv/camera/Camera.cpp index e7ba7900..4f276180 100644 --- a/modules/camera/src/vkcv/camera/Camera.cpp +++ b/modules/camera/src/vkcv/camera/Camera.cpp @@ -45,12 +45,12 @@ namespace vkcv::camera { 0.0f, 0.0f, 0.0f, 1.0f ); - const glm::mat4& Camera::getProjection() const { + glm::mat4 Camera::getProjection() const { return y_correction * m_projection; } void Camera::setProjection(const glm::mat4& projection) { - m_projection = projection; + m_projection = glm::inverse(y_correction) * projection; } glm::mat4 Camera::getMVP() const { diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp index b2eb5bc5..262aa32d 100644 --- a/projects/particle_simulation/src/main.cpp +++ b/projects/particle_simulation/src/main.cpp @@ -201,6 +201,8 @@ int main(int argc, const char **argv) { glm::vec4 colorData = glm::vec4(1.0f, 1.0f, 0.0f, 1.0f); uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT); uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL); + + cameraManager.setActiveCamera(1); cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -2)); cameraManager.getCamera(camIndex1).setPosition(glm::vec3(0.0f, 0.0f, -2.0f)); -- GitLab