主流嵌入式开源GUI比较(二)

本文对比了主流的嵌入式开源GUI,包括EFL(Enlightenment Foundation Libraries)、AWTK(Toolkit AnyWhere)、Wayland/Weston、SDL(Simple DirectMedia Layer)、DirectFB和LittlevGL。EFL以其高效和小内存占用量著称,支持多种渲染模式。AWTK强调跨平台、高效和稳定,提供丰富的控件和高度扩展性。Wayland是X11的替代品,用于桌面环境。SDL是一个多媒体开发库,支持多种平台和特性。DirectFB在Linux帧缓冲层之上提供硬件加速。LittlevGL则是一个低内存占用的图形库,适合嵌入式设备。每个GUI框架都有其独特的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一篇文章主流嵌入式开源GUI比较,对比了MicroWindows、MiniGui、QT、GTK+、OpenGUI和FLTK等GUI框架,其实还有一些框架没有列出来,或者网上资料比较少,搜索不到。这篇文章再介绍一些,有EFL(Enlightenment Foundation Libraries),AWTK(Toolkit AnyWhere),Wayland/WestonSDL(Simple DirectMedia Layer),DirectFBLittlevGLNuklear

1 EFL

1.1 EFL简介

Enlightenment Foundation Libraries (EFL) 驱动 Enlightenment,它们也可以独立使用或者构建在其他库之上,提供有用的功能并创建强大的应用程序,核心库EFL在速度和大小方面都比其GTK+和Qt等效率更高,并且具有更小的内存占用量,EFL大部分的模块开源协议都是BSD和LGPL v2.1

Enlightenment始于1996年,作为构建X11窗口管理器的项目。从那时起,已经发展了很多,Enlightenment仍然产生了Window Manager,该项目目前正在从X11过渡到Wayland。官方努力开发,最终转向Wayland,因为它是Linux上图形显示层的未来

在开发Window Manager时,还开发了一组库。这些库统称为EFL。 它们涵盖了从主循环到图形,场景图,网络,小部件,数据存储,IPC等一系列功能

EFL是用C语言编写的,默认情况下支持在C中所有公共API。绑定支持存在多种语言,包括Python,C++和Lua。随着基于对象的Unified API的完成,将提供更多语言绑定

官方仍主要支持Linux for Enlightenment,但也有一些努力(基于用户和一些开发人员的帮助和支持)来支持BSD,以及macOS和Windows

稳定的EFL API组件模块,核心EFL组件包括:

组件 说明
Evas Core scene graph and rendering
Eina Data structures and low level helpers
Edje UI layout & animation data files for themes
Eet Data (de)serialization and storage
Ecore Core loop and system abstractions like X11
Efreet Freedesktop.org standards handling
Eldbus D-Bus glue and handling
Embryo Tiny VM and compiler based on Pawn
Emotion Video decode wrapping, glue and abstraction
Ethumb Thumbnailing handler
Ephysics Physics (bullet) wrapper and Evas glue
EIO Asynchronous I/O handling
Evas Generic Loaders Extra image loaders for complex image types
Emotion Generic Players Extra video decoders (for VLC)
Elementary Widgets and high level abstractions

更多详细信息,可以访问EFL官网,先看一下官方DEMO

1.2 EFL Demo

Rage是一个使用Enlightenment Foundation Libraries(EFL)编写的视频和音频播放器,几乎所有用于视频播放和UI的部件都是由EFL本身或EFL库提供的,如GStreamer,Xine,VLC等。 由于它使用EFL,Rage将在X11,Wayland,甚至是带有Framebuffer控制台(fbcon)或Direct Rendering Manager(DMS)子系统的原始帧缓冲区中工作
rage-browse
rage-thumb
Ephoto是使用Enlightenment Foundation Libraries(EFL)编写的图像查看器和编辑器,Ephoto支持:

  • 浏览文件系统并以易于使用的网格视图显示图像
  • 以单个图像视图格式浏览图像
  • 以幻灯片方式查看图像
  • 使用剪裁,自动增强,模糊,锐化,亮度/对比度/灰度调整,色调/饱和度/值调整和色彩等级调整等功能编辑图像
  • 将艺术滤镜应用于图像,例如黑白和旧照片
  • 拖放文件操作可轻松维护您的照片目录
    ephoto1-thumb
    ephoto2-thumb
    Edi是一个使用Enlightenment Foundation Libraries(EFL)设计和构建的开发环境。 整个项目的目标是为Linux创建一个新的本机开发环境,使之比以往任何时候都更容易上手和运行
    edi-screen3
    EFL库里面还带有大量的DEMO,包括控件的使用,动画特效GPU渲染等等
    efl-on-wayland

1.3 EFL 渲染模式

1.3.1 立即模式

立即模式是图形工具包库中最常用的模式,例如GTK+,GDI和GDI+。 应用程序负责重新绘制无效的客户区部分
Immediate Mode
应用程序根据需要处理任何绘图问题,并且显示系统绘制一些GUI。 绘图完成后,它将显示在目标中。 此模式允许用户精确控制渲染周期。 但是,如果绘图命令被误用,则可能执行不必要的绘制或根本不绘制

1.3.2 保留模式

采用保留模式的图形系统基本上负责响应渲染应用程序对象的所有重绘请求。 客户端不会直接导致实际渲染,但是当更新部分对象时会重新绘制对象
Retained Mode
Evas是EFL中绘图模块,由于Evas使用保留模式,因此无需命令任何绘图。只需要将新图像文件设置为图像对象并移动矩形对象。 Evas计算无效区域,并在渲染时重绘应用程序后面的图像和矩形

EFL和/或基本应用程序在ecore主循

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值