From a1a0acff7c7eaddb0743f47fbcd73ffb081e0577 Mon Sep 17 00:00:00 2001 From: Alvin Wong Date: Tue, 16 Jul 2024 16:58:27 +0800 Subject: [PATCH] Windows: Update ANGLE surface size when window is resized ANGLE needs to be told to resize the DXGI swap chain using `eglWaitNative`. Otherwise the resize will only happen in `eglSwapBuffers`, which causes some janky stretching during window resize. --- platform/windows/gl_manager_windows_angle.cpp | 5 +++++ platform/windows/gl_manager_windows_angle.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/windows/gl_manager_windows_angle.cpp b/platform/windows/gl_manager_windows_angle.cpp index 3086edc7f23..c52564676fc 100644 --- a/platform/windows/gl_manager_windows_angle.cpp +++ b/platform/windows/gl_manager_windows_angle.cpp @@ -67,4 +67,9 @@ Vector GLManagerANGLE_Windows::_get_platform_context_attribs() const { return ret; } +void GLManagerANGLE_Windows::window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height) { + window_make_current(p_window_id); + eglWaitNative(EGL_CORE_NATIVE_ENGINE); +} + #endif // WINDOWS_ENABLED && GLES3_ENABLED diff --git a/platform/windows/gl_manager_windows_angle.h b/platform/windows/gl_manager_windows_angle.h index d8dc651cfd4..f43a6fbe022 100644 --- a/platform/windows/gl_manager_windows_angle.h +++ b/platform/windows/gl_manager_windows_angle.h @@ -50,7 +50,7 @@ private: virtual Vector _get_platform_context_attribs() const override; public: - void window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height) {} + void window_resize(DisplayServer::WindowID p_window_id, int p_width, int p_height); GLManagerANGLE_Windows(){}; ~GLManagerANGLE_Windows(){};