From 762485f135f5a9b9ce9989dc10d226eb957ecf54 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Sun, 29 Aug 2021 18:23:13 +0200 Subject: [PATCH] [#101] Simplified constructor for features collection Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- include/vkcv/Features.hpp | 5 +++++ projects/first_mesh/src/main.cpp | 5 +---- projects/first_scene/src/main.cpp | 5 +---- projects/first_triangle/src/main.cpp | 5 +---- projects/particle_simulation/src/main.cpp | 5 +---- src/vkcv/Features.cpp | 6 ++++++ 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/include/vkcv/Features.hpp b/include/vkcv/Features.hpp index 3c56eb61..6ef3fa28 100644 --- a/include/vkcv/Features.hpp +++ b/include/vkcv/Features.hpp @@ -2,6 +2,7 @@ #include <functional> #include <vector> +#include <initializer_list> #include "FeatureManager.hpp" @@ -15,8 +16,12 @@ namespace vkcv { public: Features() = default; + + Features(const std::initializer_list<std::string>& list); + Features(const Features& other) = default; Features(Features&& other) = default; + ~Features() = default; Features& operator=(const Features& other) = default; diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp index f784c130..8f0e2d1c 100644 --- a/projects/first_mesh/src/main.cpp +++ b/projects/first_mesh/src/main.cpp @@ -19,15 +19,12 @@ int main(int argc, const char** argv) { true ); - vkcv::Features features; - features.requireExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); - vkcv::Core core = vkcv::Core::create( window, applicationName, VK_MAKE_VERSION(0, 0, 1), { vk::QueueFlagBits::eGraphics ,vk::QueueFlagBits::eCompute , vk::QueueFlagBits::eTransfer }, - features + { VK_KHR_SWAPCHAIN_EXTENSION_NAME } ); vkcv::asset::Scene mesh; diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp index 6ac367e4..21f8deac 100644 --- a/projects/first_scene/src/main.cpp +++ b/projects/first_scene/src/main.cpp @@ -28,16 +28,13 @@ int main(int argc, const char** argv) { cameraManager.getCamera(camIndex0).setNearFar(0.1f, 30.0f); cameraManager.getCamera(camIndex1).setNearFar(0.1f, 30.0f); - - vkcv::Features features; - features.requireExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); vkcv::Core core = vkcv::Core::create( window, applicationName, VK_MAKE_VERSION(0, 0, 1), { vk::QueueFlagBits::eGraphics ,vk::QueueFlagBits::eCompute , vk::QueueFlagBits::eTransfer }, - features + { VK_KHR_SWAPCHAIN_EXTENSION_NAME } ); vkcv::scene::Scene scene = vkcv::scene::Scene::load(core, std::filesystem::path( diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index de5d345f..78a7db62 100644 --- a/projects/first_triangle/src/main.cpp +++ b/projects/first_triangle/src/main.cpp @@ -17,15 +17,12 @@ int main(int argc, const char** argv) { false ); - vkcv::Features features; - features.requireExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); - vkcv::Core core = vkcv::Core::create( window, applicationName, VK_MAKE_VERSION(0, 0, 1), { vk::QueueFlagBits::eTransfer,vk::QueueFlagBits::eGraphics, vk::QueueFlagBits::eCompute }, - features + { VK_KHR_SWAPCHAIN_EXTENSION_NAME } ); const auto& context = core.getContext(); diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp index 1aafa57f..4de016ae 100644 --- a/projects/particle_simulation/src/main.cpp +++ b/projects/particle_simulation/src/main.cpp @@ -23,16 +23,13 @@ int main(int argc, const char **argv) { ); vkcv::camera::CameraManager cameraManager(window); - - vkcv::Features features; - features.requireExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); vkcv::Core core = vkcv::Core::create( window, applicationName, VK_MAKE_VERSION(0, 0, 1), {vk::QueueFlagBits::eTransfer, vk::QueueFlagBits::eGraphics, vk::QueueFlagBits::eCompute}, - features + { VK_KHR_SWAPCHAIN_EXTENSION_NAME } ); auto particleIndexBuffer = core.createBuffer<uint16_t>(vkcv::BufferType::INDEX, 3, diff --git a/src/vkcv/Features.cpp b/src/vkcv/Features.cpp index 636f3f41..60616685 100644 --- a/src/vkcv/Features.cpp +++ b/src/vkcv/Features.cpp @@ -3,6 +3,12 @@ namespace vkcv { + Features::Features(const std::initializer_list<std::string>& list) : m_features() { + for (const auto& extension : list) { + requireExtension(extension); + } + } + void Features::requireExtension(const std::string& extension) { m_features.emplace_back([extension](FeatureManager& featureManager) { return featureManager.useExtension(extension, true); -- GitLab