diff options
| author | Fayaz Shaikh <61674751+fayaz12g@users.noreply.github.com> | 2026-03-04 14:13:58 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 02:13:58 +0700 |
| commit | 9372887aef95bf08b83d1e0d4145fa4a6fd6bc3a (patch) | |
| tree | 54913a067ceac833732eed76aff13792f669229f /Minecraft.Client | |
| parent | 592282495033e794106d6e5fc893a947211b9c83 (diff) | |
Fix for any aspect ratio in 3D Environments (#320)
* Add initial AnyAspectRatio support
* Remove some logic that didn't work
* Remove rogue back slash
* Remove more remnants
* Update UILayer.h
* Update some comments
* Remove WIP UI changes
* Fix diffs
* Remove UI resize call from `UpdateAspectRatio`
* handle merge conflict
* Update to C++ style static cast
* Fix syntax
Diffstat (limited to 'Minecraft.Client')
| -rw-r--r-- | Minecraft.Client/Windows64/Iggy/gdraw/gdraw_d3d1x_shared.inl | 3 | ||||
| -rw-r--r-- | Minecraft.Client/Windows64/Windows64_Minecraft.cpp | 19 | ||||
| -rw-r--r-- | Minecraft.Client/glWrapper.cpp | 8 |
3 files changed, 22 insertions, 8 deletions
diff --git a/Minecraft.Client/Windows64/Iggy/gdraw/gdraw_d3d1x_shared.inl b/Minecraft.Client/Windows64/Iggy/gdraw/gdraw_d3d1x_shared.inl index e827cd82..df42488c 100644 --- a/Minecraft.Client/Windows64/Iggy/gdraw/gdraw_d3d1x_shared.inl +++ b/Minecraft.Client/Windows64/Iggy/gdraw/gdraw_d3d1x_shared.inl @@ -973,6 +973,9 @@ void gdraw_D3D1X_(SetRendertargetSize)(S32 w, S32 h) void gdraw_D3D1X_(SetTileOrigin)(ID3D1X(RenderTargetView) *main_rt, ID3D1X(DepthStencilView) *main_ds, ID3D1X(ShaderResourceView) *non_msaa_rt, S32 x, S32 y) { + + if (!gdraw) return; // AAR - saftey check because windows calls resize early + D3D1X_(RENDER_TARGET_VIEW_DESC) desc; if (gdraw->frame_done) { diff --git a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp index 0f83fae5..61257b89 100644 --- a/Minecraft.Client/Windows64/Windows64_Minecraft.cpp +++ b/Minecraft.Client/Windows64/Windows64_Minecraft.cpp @@ -88,8 +88,7 @@ BOOL g_bWidescreen = TRUE; int g_iScreenWidth = 1920; int g_iScreenHeight = 1080; -UINT g_ScreenWidth = 1920; -UINT g_ScreenHeight = 1080; +float g_iAspectRatio = static_cast<float>(g_iScreenWidth) / g_iScreenHeight; char g_Win64Username[17] = { 0 }; wchar_t g_Win64UsernameW[17] = { 0 }; @@ -98,6 +97,14 @@ wchar_t g_Win64UsernameW[17] = { 0 }; static bool g_isFullscreen = false; static WINDOWPLACEMENT g_wpPrev = { sizeof(g_wpPrev) }; +//-------------------------------------------------------------------------------------- +// Update the Aspect Ratio to support Any Aspect Ratio +//-------------------------------------------------------------------------------------- +void UpdateAspectRatio(int width, int height) +{ + g_iAspectRatio = static_cast<float>(width) / height; +} + struct Win64LaunchOptions { int screenMode; @@ -468,6 +475,7 @@ ID3D11Texture2D* g_pDepthStencilBuffer = NULL; // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return +// WM_SIZE - handle resizing logic to support Any Aspect Ratio // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -585,6 +593,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) } } break; + case WM_SIZE: + { + UpdateAspectRatio(LOWORD(lParam), HIWORD(lParam)); + } + break; default: return DefWindowProc(hWnd, message, wParam, lParam); } @@ -719,7 +732,7 @@ HRESULT InitDevice() //app.DebugPrintf("width: %d, height: %d\n", width, height); width = g_iScreenWidth; height = g_iScreenHeight; -app.DebugPrintf("width: %d, height: %d\n", width, height); +//app.DebugPrintf("width: %d, height: %d\n", width, height); UINT createDeviceFlags = 0; #ifdef _DEBUG diff --git a/Minecraft.Client/glWrapper.cpp b/Minecraft.Client/glWrapper.cpp index 540271b9..a356e674 100644 --- a/Minecraft.Client/glWrapper.cpp +++ b/Minecraft.Client/glWrapper.cpp @@ -48,13 +48,11 @@ void glLoadIdentity() RenderManager.MatrixSetIdentity(); } -extern int g_iScreenWidth; -extern int g_iScreenHeight; - +// AAR - Use calculated aspect ratio to support dynamic resizing +extern float g_iAspectRatio; void gluPerspective(float fovy, float aspect, float zNear, float zFar) { - float dynamicAspect = (float)g_iScreenWidth / (float)g_iScreenHeight; - RenderManager.MatrixPerspective(fovy, dynamicAspect, zNear, zFar); + RenderManager.MatrixPerspective(fovy, g_iAspectRatio, zNear, zFar); } void glOrtho(float left,float right,float bottom,float top,float zNear,float zFar) |
