Now if you are not a graphics programmer, do not panic. X-Plane does run full screen! "Full screen" means something very different to users vs. driver writers.
- To users, full screen means "the application covers the entire screen." X-Plane does this!
- To driver writers, full screen means "the application is the only thing using the screen, and because of this, we can optimize drawing." In other words, to nerds, full screen means taking exclusive control of a particular display.
X-Plane doesn't use full screen mode - we simply make a window that is as large as the screen, with no decorations. Why did we decide to do this?
- Increased flexibility. Because we are always in windowed mode, we can resize, go between full screen and windowed mode, etc. without restarting or rebuilding our driver setup from scratch. This provides a user interface that responds to configuration immediately.
- No thrash with the window manager. Because we are a window, the user can fly x-plane with a third party add-on running on top of the window. (A few years ago this would have been a terrible idea, but window managers are getting a lot faster to the point where the performance penalty for an occluded window isn't as bad as it once was.)
- Less developer time. We already support ATI and NVidia on Mac, Windows and Linux - that's six configurations where something can go wrong. Add full screen and windowed mode and now it's twelve configurations.
- It is possible to run with the appearance of full screen across two monitors on a desktop. This is nice for users with dual-headed cards.
As it turns out, this amount of time has become trivially small. Going full screen might take us from 29.95 fps to 30 fps. Is it worth losing ease of support, ease of development, and ease of use for 0.05 fps? I don't think so.
(Note: on older cards, "copy" time does matter, particularly at huge resolutions. But with older cards you can't run at a huge resolution anyway without your framerate getting killed, so it's a bit moot.)
I think X-Plane is unusual in doing this - the norm for games that I have seen is to run full screen, which is why for most games you need hardware like the Matrox Triple-head to fly wtih two monitors.
* I suspect that if you require your back-buffer image to persist when flipped to the front buffer, then you take a performance hit anyway, but generally games do not want to rely on this.