From 96b151602b9f7ba37f38656b76da2ce5d4cdf217 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Tue, 15 Jun 2021 19:13:30 +0200
Subject: [PATCH] [#73] Fixed initial camera projection matrix

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 modules/camera/include/vkcv/camera/CameraManager.hpp | 4 +---
 modules/camera/src/vkcv/camera/CameraManager.cpp     | 6 ++++--
 projects/cmd_sync_test/src/main.cpp                  | 2 +-
 projects/first_mesh/src/main.cpp                     | 2 +-
 projects/first_triangle/src/main.cpp                 | 2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/modules/camera/include/vkcv/camera/CameraManager.hpp b/modules/camera/include/vkcv/camera/CameraManager.hpp
index 69c4b311..0c504179 100644
--- a/modules/camera/include/vkcv/camera/CameraManager.hpp
+++ b/modules/camera/include/vkcv/camera/CameraManager.hpp
@@ -105,10 +105,8 @@ namespace vkcv::camera {
         /**
          * @brief The constructor of the #CameraManager.
          * @param[in] window The window.
-         * @param[in] width The width of the window.
-         * @param[in] height The height of the window.
          */
-        CameraManager(Window &window, float width, float height);
+        CameraManager(Window &window);
 
         /**
          * @brief The destructor of the #CameraManager. Destroying the #CameraManager leads to deletion of all stored
diff --git a/modules/camera/src/vkcv/camera/CameraManager.cpp b/modules/camera/src/vkcv/camera/CameraManager.cpp
index 977c61d0..561596c2 100644
--- a/modules/camera/src/vkcv/camera/CameraManager.cpp
+++ b/modules/camera/src/vkcv/camera/CameraManager.cpp
@@ -5,7 +5,7 @@
 
 namespace vkcv::camera {
 
-    CameraManager::CameraManager(Window &window, float width, float height)
+    CameraManager::CameraManager(Window& window)
     : m_window(window)
     {
         bindCameraToEvents();
@@ -82,8 +82,10 @@ namespace vkcv::camera {
     }
 	
 	uint32_t CameraManager::addCamera(ControllerType controllerType) {
+    	const float ratio = static_cast<float>(m_window.getWidth()) / static_cast<float>(m_window.getHeight());
+    	
         Camera camera;
-        camera.setPerspective(glm::radians(60.0f), m_window.getWidth() / m_window.getHeight(), 0.1f, 10.0f);
+        camera.setPerspective(glm::radians(60.0f), ratio, 0.1f, 10.0f);
         return addCamera(controllerType, camera);
     }
     
diff --git a/projects/cmd_sync_test/src/main.cpp b/projects/cmd_sync_test/src/main.cpp
index a02c4542..3c2ab00d 100644
--- a/projects/cmd_sync_test/src/main.cpp
+++ b/projects/cmd_sync_test/src/main.cpp
@@ -18,7 +18,7 @@ int main(int argc, const char** argv) {
 		true
 	);
 
-    vkcv::camera::CameraManager cameraManager(window, windowWidth, windowHeight);
+    vkcv::camera::CameraManager cameraManager(window);
     uint32_t camIndex = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
     uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
     
diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index 42b1f595..b01ed4a2 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -146,7 +146,7 @@ int main(int argc, const char** argv) {
 	vkcv::DescriptorSetUsage    descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
 	vkcv::DrawcallInfo          drawcall(renderMesh, { descriptorUsage });
 
-    vkcv::camera::CameraManager cameraManager(window, windowWidth, windowHeight);
+    vkcv::camera::CameraManager cameraManager(window);
     uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
 	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
 	
diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index dcb53c94..ffb07bf7 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -169,7 +169,7 @@ int main(int argc, const char** argv) {
 
 	const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 	
-    vkcv::camera::CameraManager cameraManager(window, windowWidth, windowHeight);
+    vkcv::camera::CameraManager cameraManager(window);
     uint32_t camIndex = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
     uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
 	
-- 
GitLab