这部分直接看qt对嵌入式的支持介绍,不得不说,一个软件要做好,各方面都要涉及到,不懂理论的人怎么能够选择嵌入式最恰当的东西呢 —— [ Qt for Embedded Linux ]
EGLFS
EGL is an interface between OpenGL and the native windowing system. Qt can use EGL for context and surface management, however the API contains no platform-specifics: The creation of a native window (which will not necessarily be an actual window on the screen) must still be done by platform-specific means. Hence the need for the board or GPU-specific adaptation code. Such adaptations are provided either as eglfs hooks, which can be a single source file compiled into the platform plugin, or as dynamically loaded EGL device integration plugins.
EGLFS is a platform plugin for running Qt5 applications on top of EGL and OpenGL ES 2.0 without an actual windowing system (like X11 or Wayland). In addition to Qt Quick 2 and native OpenGL applications, it supports software-rendered windows (for example QWidget) too. In the latter case the widgets’ contents are rendered using the CPU into images, which are then uploaded into textures and composited by the plugin.
This is the recommended plugin for modern Embedded Linux devices that include a GPU.(介绍的比较多,这里画个重点,意思是嵌入式设备,带GPU的最好用这个)
EGLFS forces the first top-level window (be it either a QWidget or a QQuickView) to become fullscreen. This window is also chosen to be the root widget window into which all other top-level widgets (for example dialogs, popup menus or combobox dropdowns) are composited. This is necessary because with EGLFS there is always exactly one native window and EGL window surface, and these belong to the widget or window that is created first. This approach works well when there is a main window that exists for the entire lifetime of the application and all other widgets are either non top-levels or are created afterwards, once the main window is shown.
There are further restrictions for OpenGL-based windows. As of Qt 5.3, eglfs supports a single fullscreen GL window (for example, an OpenGL-based QWindow, a QQuickView or a QGLWidget). Opening additional OpenGL windows or mixing such windows with QWidget-based content is not supported and terminates the application with an error message.
XCB
This is the X11 plugin used on regular desktop Linux platforms. In some embedded environments, that provide X and the necessary development files for xcb, this plugin functions just like it does on a regular PC desktop.
Note: On some devices there is no EGL and OpenGL support available under X because the EGL implementation is not compatible with Xlib. In this case the XCB plugin is built without EGL support, meaning that Qt Quick 2 or other OpenGL-based applications does not work with this platform plugin. It can still be used however to run software-rendered applications (based on QWidget for example).
As a general rule, the usage of XCB on embedded devices is not advisable. Plugins like eglfs are likely to provide better performance, and hardware acceleration.(重点就是这个了,嵌入式不推荐)
Wayland
Wayland is a light-weight windowing system; or more precisely, it is a protocol for clients to talk to a display server.
The Qt Wayland module provides a wayland platform plugin that allows Qt application to connect to a Wayland compositor.
Note: You may experience issues with touch screen input while using the Weston reference compositor. Refer to the Qt Wiki for further information.