From 9228338b39eafe1bae33699734b915d8e50909c4 Mon Sep 17 00:00:00 2001 From: SuperUserNameMan <9801802+SuperUserNameMan@users.noreply.github.com> Date: Tue, 23 Jul 2024 17:57:58 +0200 Subject: [PATCH] `rcore_desktop_glfw.c` : flags to control texture font linear filtering - part 3 When in `FLAT_RESCALE_CONTENT` mode, the default "nearest pixel" filter of the texture font is ugly sometimes. So this change adds `FLAG_RESCALE_CONTENT_LINEAR` and `FLAG_TEXT_LINEAR_FILTER` to offer more control. `FLAG_TEXT_LINEAR_FILTER` can also be used to disable the linear filtering of `FLAG_WINDOW_HIGHDPI`. --- src/platforms/rcore_desktop_glfw.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index ed48512e6..b48843e62 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -418,6 +418,14 @@ void SetWindowState(unsigned int flags) glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); WindowSizeCallback(platform.handle, fbWidth, fbHeight); } + + // State change: FLAG_TEXT_LINEAR_FILTER + if (((CORE.Window.flags & FLAG_TEXT_LINEAR_FILTER) != (flags & FLAG_TEXT_LINEAR_FILTER)) && ((flags & FLAG_TEXT_LINEAR_FILTER) > 0)) + { + CORE.Window.flags |= FLAG_TEXT_LINEAR_FILTER; + rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MIN_FILTER, RL_TEXTURE_FILTER_LINEAR); + rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MAG_FILTER, RL_TEXTURE_FILTER_LINEAR); + } } // Clear window configuration state flags @@ -541,6 +549,14 @@ void ClearWindowState(unsigned int flags) glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); WindowSizeCallback(platform.handle, fbWidth, fbHeight); } + + // State change: FLAG_TEXT_LINEAR_FILTER + if (((CORE.Window.flags & FLAG_TEXT_LINEAR_FILTER) > 0) && ((flags & FLAG_TEXT_LINEAR_FILTER) > 0)) + { + CORE.Window.flags &= ~FLAG_TEXT_LINEAR_FILTER; + rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MIN_FILTER, RL_TEXTURE_FILTER_NEAREST); + rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MAG_FILTER, RL_TEXTURE_FILTER_NEAREST); + } } // Set icon for window