From 13a9d91f512d54b6c3cf6b4f1f40d650bfc35a3c Mon Sep 17 00:00:00 2001
From: Mark Oliver Mints <mmints@uni-koblenz.de>
Date: Tue, 10 Aug 2021 17:05:49 +0200
Subject: [PATCH] [#71] Refactor: implement a create function for Pipeline
 Viewport State Create Info Struct

---
 src/vkcv/PipelineManager.cpp | 24 +++++++++++++++++++++---
 src/vkcv/PipelineManager.hpp |  7 +++++++
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index d0cc95c3..e536895d 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -255,9 +255,8 @@ namespace vkcv
                 createPipelineInputAssemblyStateCreateInfo(config);
 
         // viewport state
-        vk::Viewport viewport(0.f, 0.f, static_cast<float>(config.m_Width), static_cast<float>(config.m_Height), 0.f, 1.f);
-        vk::Rect2D scissor({ 0,0 }, { config.m_Width, config.m_Height });
-        vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo({}, 1, &viewport, 1, &scissor);
+        vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo =
+                createPipelineViewportStateCreateInfo(config);
 
         vk::CullModeFlags cullMode;
         switch (config.m_culling) {
@@ -595,4 +594,23 @@ namespace vkcv
         );
         return pipelineInputAssemblyStateCreateInfo;
     }
+
+    vk::PipelineViewportStateCreateInfo
+    PipelineManager::createPipelineViewportStateCreateInfo(const PipelineConfig &config) {
+        vk::Viewport viewport(0.f, 0.f,
+                              static_cast<float>(config.m_Width),
+                              static_cast<float>(config.m_Height),
+                              0.f, 1.f);
+
+        vk::Rect2D scissor({ 0,0 },
+                           { config.m_Width,
+                             config.m_Height });
+
+        vk::PipelineViewportStateCreateInfo pipelineViewportStateCreateInfo({},
+                                                                            1,
+                                                                            &viewport,
+                                                                            1,
+                                                                            &scissor);
+        return pipelineViewportStateCreateInfo;
+    }
 }
diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp
index d0c7f333..0e80b02e 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -80,5 +80,12 @@ namespace vkcv
          * @return Pipeline Input Assembly State Create Info Struct
          */
         vk::PipelineInputAssemblyStateCreateInfo createPipelineInputAssemblyStateCreateInfo(const PipelineConfig &config);
+
+        /**
+         * Create a Pipeline Viewport State Create Info Struct with default set viewport and scissor settings
+         * @param config provides with and height of the output window
+         * @return Pipeline Viewport State Create Info Struct
+         */
+        vk::PipelineViewportStateCreateInfo createPipelineViewportStateCreateInfo(const PipelineConfig &config);
     };
 }
-- 
GitLab