PUI: Difference between revisions
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
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:
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:
- Integrated Web GUI (external, browser-based - fully asynchronous)
- Howto:Processing legacy PUI dialogs using Canvas (internal, using the Canvas system and a simple Nasal parser to deal with existing PUI/XML dialogs)
Screenshot showing Phi
Screenshot showing a dialog rendered by the pui2canvas parser