gui-framework-benchmark/README.md
2025-04-07 14:24:30 +02:00

34 lines
No EOL
2.4 KiB
Markdown

# GUI Framework Benchmark
![Static Badge](https://img.shields.io/badge/license-MIT-lightgrey)
There exists various framework for GUI, some are web-based, other relies on the different API of each OSes. The goal of this repository is to check the usability _(ease of code)_, performance _(CPU/GPU usage)_ and versatility _(components)_ of each of the choosen UIs.
Here are some curated lists of existing frameworks :
- [Wikipedia's widget toolkit list](https://en.wikipedia.org/wiki/List_of_widget_toolkits)
- [My GitHub list "User Interface"](https://github.com/stars/yoboujon/lists/user-interface)
The goal of this repository is not to check which one is the best, but more to check which can be used for what project. Some are GPU dependent, Web dependent but offers a better programming interface, others are fast but a pain to setup. We'll see where this leads us !
## How to build
I love to build everything from source generally speaking, but UI frameworks are really heavy and because there will be dozens of dependency for each subproject, I do not want to go into the hastle of building everything from scratch. Eeach subproject will have their own dependency and their way to be downloaded.
## GTK (GIMP ToolKit)
[Source Code](https://gitlab.gnome.org/GNOME/gtk)
Using Cambalache to design the software. GTK is known for being cross-platform and easy to use. It relies on system calls and draws itself from them, so if your systems shows something, any GTK application will too.
|Name|License|Hardware|Software|Speed|
|:-:|:--|:--|:--|:--|
|GTK|LGPL ✅|use both GPU/CPU ✅|Use OS's API (Window drawing API) ✅|Written in C|
## RmlUI
[Source Code](https://github.com/mikke89/RmlUi)
RmlUI is both an HTML(`.rml`)/CSS parser and renderer. It uses OpenGL to render the window and can be linked to any existing OpenGL project. One of the most useful feature that is both a pro and a con is the use of `.rml` files. Because it is a declarative GUI, it relies on configuration files that can then be interfaced with the underlying logic, while this can be a big plus, it adds some latency that we will check in this repository. The other caveat of using such a library is that it is only GPU rendered, this can be a hastle if the GPU driver of the target is too old and can't show a simple window.
|Name|License|Hardware|Software|Speed|
|:-:|:--|:--|:--|:--|
|RmlUI|LGPL ✅|only uses the GPU ❌|Use OS's API (OpenGL) ✅|Written in C++|