For reasons I use a rather unusual resolution in my pixel-art game: 576x324pixels.
And now I am struggling to get it blown up to fullscreen. I played around with the Project Settings > Display > Window > Scale Mode and found that
“integer” displays the pixels properly, doesn’t give me fullscreen and leaves a frame around the game no matter if displayed on a 1920- or 2560-screen:
Maybe fractional with antialiasing? If you want crisp pixel art at exactly fullscreen res, something’s going to have to give. Probably the closest you can get will be to render at higher res than the display and scale down; you’ll get softer edges due to the antialiasing, though.
Let’s say you scale the screen from 576x324 to 576x325; what should Godot do to fill in that extra one-pixel line? With fractional it uses your set scaling algorithm, seemingly “nearest” picking the closests pixels, but now you have some duplicate doublewide pixels, some call them mixels for mixed-size pixels. With integer Godot deduces that the game cannot be scaled without mixels, because it cannot take a pixel and turn it into exactly 2, 3, 4 etc square copies, so it fills in with a black border instead, sometimes this can be dramatic.
You may be able to mix the Camera2D zoom level and fractional scaling; severely zooming in to prevent black borders but then you wouldn’t have perfect control of the camera bounds, which may be better to switch to stretch mode disabled anyways.
I come from a visual realm and in my head, as long as it is 16:9 it is possible to display fullscreen. But I assume it works differently and not as freely in game engines. I thought as much but needed confirmation.