diff --git a/include/vkcv/PushConstants.hpp b/include/vkcv/PushConstants.hpp index e02e5e6995c9aa563cf24d2e1fe68f879b006a8e..8d441bfcb57807eedc94d4cf839f6e99729d1cbe 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 c3824b49702780775bbfc2f92af741ebfaaa0edd..bfbc9909cef71f2c05f91b4a73fa84303faa961c 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);