Fix back buffer not resizing on fullscreen toggle
Window::OnResized() (called for every SDL window-resize event, including entering/leaving browser fullscreen) updated the window's own tracked pixel size but never propagated it to the window's back buffer render target, whose stale size kept driving glViewport() - so toggling fullscreen resized the canvas but rendering stayed pinned to the old, smaller viewport. Mirrors the resize handling the BGFX backend already does explicitly elsewhere in RenderDevice.cpp. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
diff --git a/src/renderer/Window.cpp b/src/renderer/Window.cpp
|
||||
index ad608f8..3dff060 100644
|
||||
--- a/src/renderer/Window.cpp
|
||||
+++ b/src/renderer/Window.cpp
|
||||
@@ -381,6 +381,15 @@ void Window::OnResized()
|
||||
return;
|
||||
SDL_GetWindowSize(m_nwnd, &m_width, &m_height);
|
||||
SDL_GetWindowSizeInPixels(m_nwnd, &m_pixelWidth, &m_pixelHeight);
|
||||
+ // vpinball-wasm: keep the (GL) default back buffer's tracked size in sync
|
||||
+ // with the window's actual pixel size, mirroring what the BGFX backend
|
||||
+ // already does explicitly every frame (RenderDevice.cpp's swapchain
|
||||
+ // resize handling). Without this, glViewport(0, 0, m_width, m_height) in
|
||||
+ // RenderTarget::Activate() keeps using the pre-resize size forever, so
|
||||
+ // e.g. entering browser fullscreen (which resizes the canvas well after
|
||||
+ // the back buffer was created) only renders into the old, smaller area.
|
||||
+ if (m_backBuffer)
|
||||
+ m_backBuffer->SetSize(m_pixelWidth, m_pixelHeight);
|
||||
}
|
||||
|
||||
VPX::Window::VideoMode Window::SDLtoVPXVideoMode(const SDL_DisplayMode* mode)
|
||||
Reference in New Issue
Block a user