diff --git a/include/vkcv/Features.hpp b/include/vkcv/Features.hpp index 3c56eb61d7683c05497a985f86dc47f0a70b8c1a..6ef3fa28be912627b4495c66427336dfaa51beff 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 f784c13007e59ea2461252b02a24e3d790a58107..8f0e2d1cac253418d278e10382e36e12040cea7f 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 6ac367e41906a276e6c739e0242b859eae5b8f15..21f8deacdb3f81fcd29c5f14cbe74485f36d13cd 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 de5d345fec7635ea20e7f025f5faed90c35f6cd8..78a7db62f6ffd6d2e3dbd41ea1dace89209315f8 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 1aafa57fa343b1c3bcb6571e82bd4b359fd8180e..4de016aefd345a4231ea2dae0818b0839b163729 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 636f3f41fd6008a3a33a2212792219dbe39d320f..60616685f67084b6875ce14bf09f524a9127688f 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);