From d806873cbdedd953ee04ff4917a1fd54da744bac Mon Sep 17 00:00:00 2001 From: Michal Date: Wed, 5 Aug 2026 20:27:48 +0200 Subject: [PATCH] Disabled high DPI flag on Windows Signed-off-by: Michal --- apps/lidar_odometry_step_1/resource.rc | 5 +++ .../multi_view_tls_registration_gui.cpp | 29 ++++++++---------- apps/multi_view_tls_registration/resource.aps | Bin 0 -> 24340 bytes apps/multi_view_tls_registration/resource.rc | 5 +++ 4 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 apps/multi_view_tls_registration/resource.aps diff --git a/apps/lidar_odometry_step_1/resource.rc b/apps/lidar_odometry_step_1/resource.rc index 3bad5857..ac2be718 100644 --- a/apps/lidar_odometry_step_1/resource.rc +++ b/apps/lidar_odometry_step_1/resource.rc @@ -13,6 +13,11 @@ // remains consistent on all systems. IDI_ICON1 ICON "icon.ico" +// GLFW (used by raylib) only picks up a window/taskbar icon from a +// resource named exactly GLFW_ICON on Windows; without it GLFW falls +// back to the generic IDI_WINLOGO icon at runtime. +GLFW_ICON ICON "icon.ico" + ///////////////////////////////////////////////////////////////////////////// // diff --git a/apps/multi_view_tls_registration/multi_view_tls_registration_gui.cpp b/apps/multi_view_tls_registration/multi_view_tls_registration_gui.cpp index 867ab494..a02b01be 100644 --- a/apps/multi_view_tls_registration/multi_view_tls_registration_gui.cpp +++ b/apps/multi_view_tls_registration/multi_view_tls_registration_gui.cpp @@ -5126,23 +5126,18 @@ bool initGL(int* argc, char** argv, const std::string& winTitleArg, void (*)(), (void)argc; (void)argv; - // No FLAG_MSAA_4X_HINT: on some GPU/driver combinations (seen with an - // NVIDIA PRIME-offloaded context) GLFW's GLX context request for a - // 4x-multisample framebuffer fails outright ("GLX: Failed to create - // context: BadValue"), and raylib/GLFW then segfaults using the broken - // context instead of falling back cleanly. Not worth the crash risk for - // a cosmetic antialiasing hint. - // - // FLAG_WINDOW_HIGHDPI: macOS/GLFW always backs the window with a - // full-resolution Retina framebuffer (rglfw.c's _GLFW_USE_RETINA), - // regardless of this flag -- but rlImGui only reads that real scale - // factor into io.DisplayFramebufferScale (and scales its font atlas - // and mouse coordinates to match) when FLAG_WINDOW_HIGHDPI is set. - // Without it, on a Retina display ImGui assumes 1:1 and everything it - // draws ends up scaled/positioned for a framebuffer a quarter the - // actual size -- menus stretched into oversized black bars, widgets - // rendered as solid blocks from a mis-sampled font atlas. - SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI); + // FLAG_WINDOW_HIGHDPI on Windows causes issues with the ImGui menu bar and other UI elements being scaled incorrectly, so it's only + // enabled on macOS and Linux. On Windows, raylib's default DPI scaling is used instead. + + unsigned int flags = FLAG_WINDOW_RESIZABLE; +#ifdef __APPLE__ + flags |= FLAG_WINDOW_HIGHDPI; +#endif //__APPLE__ +#if __LINUX__ + flags |= FLAG_WINDOW_HIGHDPI; +#endif // __LINUX__ + + SetConfigFlags(flags); InitWindow(static_cast(window_width), static_cast(window_height), winTitleArg.c_str()); SetTargetFPS(60); diff --git a/apps/multi_view_tls_registration/resource.aps b/apps/multi_view_tls_registration/resource.aps new file mode 100644 index 0000000000000000000000000000000000000000..952c5ea2c989ce19d451ca94a04a575d4fc394c5 GIT binary patch literal 24340 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 fTRQx1*!*1Phn%7J(GBfK1KXd={OHH^0