From 5e7afc4ec3b5ddb34b71cf8e25a86e5c6a53da10 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Wed, 13 Jul 2022 04:03:22 +0200
Subject: [PATCH] Shortened potential push constants filling

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 include/vkcv/PushConstants.hpp       | 20 ++++++++++++++++++++
 projects/first_triangle/src/main.cpp |  5 +----
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/include/vkcv/PushConstants.hpp b/include/vkcv/PushConstants.hpp
index e02e5e69..8d441bfc 100644
--- a/include/vkcv/PushConstants.hpp
+++ b/include/vkcv/PushConstants.hpp
@@ -140,4 +140,24 @@ namespace vkcv {
 		return PushConstants(typeGuard<T>());
 	}
 	
+	template<typename T>
+	PushConstants pushConstants(const T& value) {
+		auto pc = pushConstants<T>();
+		pc.template appendDrawcall(value);
+		return pc;
+	}
+	
+	template<typename T>
+	PushConstants pushConstants(const std::vector<T>& values) {
+		auto pc = pushConstants<T>();
+		
+		for (const T& value : values) {
+			if (!(pc.template appendDrawcall(value))) {
+				break;
+			}
+		}
+		
+		return pc;
+	}
+	
 }
diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp
index c3824b49..bfbc9909 100644
--- a/projects/first_triangle/src/main.cpp
+++ b/projects/first_triangle/src/main.cpp
@@ -100,9 +100,6 @@ int main(int argc, const char** argv) {
 		
 		cameraManager.update(0.000001 * static_cast<double>(deltatime.count()));
         glm::mat4 mvp = cameraManager.getActiveCamera().getMVP();
-
-		vkcv::PushConstants pushConstants = vkcv::pushConstants<glm::mat4>();
-		pushConstants.appendDrawcall(mvp);
 		
 		auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);
 		core.setDebugLabel(cmdStream, "Render Commands");
@@ -111,7 +108,7 @@ int main(int argc, const char** argv) {
 			cmdStream,
 			trianglePass,
 			trianglePipeline,
-			pushConstants,
+			vkcv::pushConstants<glm::mat4>(mvp),
 			{ drawcall },
 			{ swapchainInput },
 			windowHandle);
-- 
GitLab