diff --git a/libs/app/include/psemek/app/application.hpp b/libs/app/include/psemek/app/application.hpp index 544e0dd0..1b2dd1a1 100644 --- a/libs/app/include/psemek/app/application.hpp +++ b/libs/app/include/psemek/app/application.hpp @@ -24,6 +24,7 @@ namespace psemek::app std::string name; int multisampling = 4; bool highdpi = false; + bool srgb = false; #if defined(PSEMEK_GRAPHICS_API_WEBGPU) std::vector required_features = {}; std::optional required_limits = {}; diff --git a/libs/sdl2/source/window.cpp b/libs/sdl2/source/window.cpp index 0969eae3..890a8282 100644 --- a/libs/sdl2/source/window.cpp +++ b/libs/sdl2/source/window.cpp @@ -38,6 +38,7 @@ namespace psemek::sdl2 SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, options.srgb ? 1 : 0); if (options.multisampling == 0) { @@ -83,6 +84,9 @@ namespace psemek::sdl2 SDL_GL_MakeCurrent(window_, gl_context_); gfx::init(); + + if (options.srgb) + gl::Enable(gl::FRAMEBUFFER_SRGB); #elif defined(PSEMEK_GRAPHICS_API_WEBGPU) wgpu::setup_logging(log::level::error);