PUI: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (more refs)
No edit summary
Line 16: Line 16:
PUI is also known to affect rendering performance quite significantly, while also preventing FlightGear from using a more recent version of OpenGL<ref>http://sourceforge.net/p/flightgear/mailman/message/34532040/</ref>.  
PUI is also known to affect rendering performance quite significantly, while also preventing FlightGear from using a more recent version of OpenGL<ref>http://sourceforge.net/p/flightgear/mailman/message/34532040/</ref>.  


In addition, [[OpenSceneGraph]] (OSG) can obviously not help optimize any PUI related GL code and PUI widgets are generally considered to be pretty archaic and not easy to extend<ref>http://sourceforge.net/p/flightgear/mailman/message/26832164/<ref><ref>http://sourceforge.net/p/flightgear/mailman/message/10587120/</ref><ref>http://sourceforge.net/p/flightgear/mailman/message/10587272/</ref>.
In addition, [[OpenSceneGraph]] (OSG) can obviously not help optimize any PUI related GL code and PUI widgets are generally considered to be pretty archaic and not easy to extend<ref>http://sourceforge.net/p/flightgear/mailman/message/26832164/</ref><ref>http://sourceforge.net/p/flightgear/mailman/message/10587120/</ref><ref>http://sourceforge.net/p/flightgear/mailman/message/10587272/</ref>.


For these reasons, we're hoping to phase out PUI in FlightGear.
For these reasons, we're hoping to phase out PUI in FlightGear.

Revision as of 13:29, 3 November 2015

Custom-autopilot-dialog.png

PUI is the standard GUI engine used in FlightGear, it is part of PLIB and is using raw, fixed-pipeline, OpenGL code internally (no OpenSceneGraph). PUI provides a fairly basic, but robust, set of widgets. PUI is also used for rendering the Menubar:

Menubar2.jpg

PUI dialogs are standard PropertyList XML Files that are stored in $FG_ROOT/gui/dialogs, they can contain the widgets mentioned in $FG_ROOT/Docs/README.gui, using a simple layout engine discussed in $FG_ROOT/Docs/README.layout, and bindings using a combination of so called fgcommands (see $FG_ROOT/Docs/README.commands) and custom Nasal code. In addition, each PUI/XML dialog may contain Nasal sections that are executed when opening/closing the dialog.

PUI/XML dialogs can be loaded, updated and closed using a handful of fgcommands:

  • dialog-show
  • dialog-update
  • dialog-apply
  • dialog-close

PUI related OpenGL code is particularly infamous for causing rendering artifacts for people on AMD/ATI and Intel hardware (especially in combination with certain styles and effects/shaders).

PUI is also known to affect rendering performance quite significantly, while also preventing FlightGear from using a more recent version of OpenGL[1].

In addition, OpenSceneGraph (OSG) can obviously not help optimize any PUI related GL code and PUI widgets are generally considered to be pretty archaic and not easy to extend[2][3][4].

For these reasons, we're hoping to phase out PUI in FlightGear.

As of late 2015, there is heavy activity towards providing alternatives to a PUI-based UI: