diff --git a/openVulkanoCpp/Base/EngineConfiguration.hpp b/openVulkanoCpp/Base/EngineConfiguration.hpp index 64557d8..51903a6 100644 --- a/openVulkanoCpp/Base/EngineConfiguration.hpp +++ b/openVulkanoCpp/Base/EngineConfiguration.hpp @@ -19,9 +19,10 @@ namespace openVulkanoCpp uint32_t numThreads = 1; std::array frameBufferClearColor = { 0.39f, 0.58f, 0.93f, 1.0f }; + bool preferFramebufferFormatSRGB = true; public: - static EngineConfiguration* GetEngineConfiguration() + [[nodiscard]] static EngineConfiguration* GetEngineConfiguration() { static EngineConfiguration* config = new EngineConfiguration(); return config; @@ -32,7 +33,7 @@ namespace openVulkanoCpp this->numThreads = numThreads; } - uint32_t GetNumThreads() const + [[nodiscard]] uint32_t GetNumThreads() const { return std::max(static_cast(1), numThreads); } @@ -42,9 +43,19 @@ namespace openVulkanoCpp this->frameBufferClearColor = frameBufferClearColor; } - std::array GetFrameBufferClearColor() const + [[nodiscard]] std::array GetFrameBufferClearColor() const { return frameBufferClearColor; } + + [[nodiscard]] bool GetPreferFramebufferFormatSRGB() const + { + return preferFramebufferFormatSRGB; + } + + void SetPreferFramebufferFormatSRGB(bool sRGB) + { + preferFramebufferFormatSRGB = sRGB; + } }; } \ No newline at end of file diff --git a/openVulkanoCpp/Vulkan/SwapChain.cpp b/openVulkanoCpp/Vulkan/SwapChain.cpp index b71649a..e33166d 100644 --- a/openVulkanoCpp/Vulkan/SwapChain.cpp +++ b/openVulkanoCpp/Vulkan/SwapChain.cpp @@ -8,6 +8,7 @@ #include "Base/Logger.hpp" #include "Base/Utils.hpp" #include "Base/UI/IVulkanWindow.hpp" +#include "Base/EngineConfiguration.hpp" #include "Scene/DataFormat.hpp" #include @@ -174,6 +175,13 @@ namespace openVulkanoCpp::Vulkan } else { //TODO chose best fitting + for (const auto& format : surfaceFormats) + { + if (DataFormat(static_cast(format.format)).IsSRGB() == EngineConfiguration::GetEngineConfiguration()->GetPreferFramebufferFormatSRGB()) + { + return format; + } + } return surfaceFormats[0]; } } @@ -188,4 +196,4 @@ namespace openVulkanoCpp::Vulkan } return imgs; } -} \ No newline at end of file +}