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:
|
Frames per second |
|---|---|
not set |
35.3 / 36.8 / 36.5 |
|
38.0 |
|
35.4 |
|
37.3 |
|
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.