Frame rate

The full measurements are in the article Grafikeinstellungen und FPS im Vergleich (German). In short: in FlightGear, almost always a single CPU core is the limit, not the graphics card.

My settings

"$FG_BASIS/werkzeuge/starten.sh" --aircraft=c172p --airport=EDDE \
  --graphics-preset=high-quality \
  --texture-filtering=16 \
  --prop:/sim/rendering/multithreading-mode=CullThreadPerCameraDrawThreadPerContext \
  --visibility=40000 \
  --prop:/sim/rendering/clouds3d-vis-range=40000 \
  --disable-ai-traffic

The biggest lever: multi-core mode

This mode moves culling and drawing to their own cores. Measured over the Thuringian Forest:

multithreading-mode

Frames per second

not set

35.3 / 36.8 / 36.5

DrawThreadPerContext

38.0

CullDrawThreadPerContext

35.4

AutomaticSelection

37.3

CullThreadPerCameraDrawThreadPerContext

46.1 / 47.4 / 47.7

Parked, it gained 31 to 46 %, depending on the aircraft.

Warning

On an aircraft whose scripts saturate the main core it gains nothing, for example with the G1000. Some aircraft showed more error messages with it, so I use SingleThreaded for long unattended flights.

What the settings gain

Variant

Frames per second

Look

high-quality, tree density 2.0, texture filter 8×

35.4

dense forest

high-quality, tree density 2.0, texture filter 16×

35.5

dense forest, sharper ground

high-quality, tree density 0.6, texture filter 16×

37.9

sparse forest, bare patches

preset medium

41.9

fewer trees and details

So the texture filter costs nothing. If you need more frame rate, take the medium preset rather than fewer trees.

Pitfall: the preset overrides options

--graphics-preset is applied after individual --prop options, so a tree density next to it has no effect. If you want different values, leave out the preset and pass its values individually; they are in fgdata/Video/high-quality-preset.xml. --texture-filtering, on the other hand, is respected.

What really helps

  • Close other programs, especially browsers with many tabs.

  • Choose an economical aircraft: elaborate glass cockpits in Nasal cost more than any graphics setting.

  • Measure only one change at a time and cross-check at the end.

Measure it yourself

import time
from fg_steuerung import Fg

fg = Fg()
werte = []
for _ in range(60):
    werte.append(float(fg.get("/sim/frame-rate") or 0))
    time.sleep(1)
print("Mean:", round(sum(werte) / len(werte), 1), "Min:", min(werte))

When measuring in flight, set everything back to the starting value at the end and measure again. For me the frame rate also rose with the effects switched back on, so it came from the terrain and not from the settings.