Minecraft can detect the fullscreen resolutions correctly, however the window has not been flagged as DPI aware, resulting in a non-native virtual resolution being used to create the framebuffer objects. The F3 display also displays the virtual window size instead of the physical one
Attachments
Comments 3
I assume it is because the Java Edition is not a UWP application, and would potentially require significant work on the developer's end for not enough gain. Please note this is speculation and not an official statement.
I would expect it to be a feature already present in LwJGL, all that should be needed is flagging the window as DPI aware before creation, and providing a scale option inside the graphics settings if high resolution is a problem.
On window resize, firing a buffer destroy-recreate, you simply grab the true window resolution (should be returned by the window size call when the DPI awareness is flagged correctly), and factor it by the scale option, and feed that to the buffer creation.
You could also provide an auto mode in the scale slider, of which the behaviour would be to grab the active scaling of the window at the time of resize/migration (a resize event is usually fired on scale change).
Note that you cannot expect this to be an automatic feature inside LwJGL, the application using said library must still handle the given modes correctly, otherwise if its left to auto DPI aware then you'll get mac users complaining that their small integrated chips are chugging at 5k.
If the feature is apparently missing in LwJGL, or not functioning as intended, please make that clear and don't close it as a "wontfix", that's not how you solve problems. I can potentially fix the bug (if present) in LwJGL if need be (note, only for windows and linux however, I do not own a high DPI mac).
Additional feature note; the scaling option could be allowed to go as low as .5x, which would provide a simple super-sampling feature.
... really...?
You could easily fix the behaviour, but keeping it in and making it look worse than previous versions is instead the intended goal...? why...?