
* Make egui_glow and opt-in backend for eframe * Add egui_glow to Cargo.toml and to CI * Reference egui_glow where egui_glium is mentioned * Remove path-patches from root Cargo.toml * Add instructions on how to enable the glow backend of eframe
2.6 KiB
Arcitecture
This document describes how the crates that make up egui are all connected.
Also see CONTRIBUTING.md
for what to do before opening a PR.
Crate overview
The crates in this repository are: egui, emath, epaint, egui, epi, egui-winit, egui_web, egui_glium, egui_glow, egui_demo_lib, egui_demo_app
.
egui
: The main GUI library.
Example code: if ui.button("Click me").clicked() { … }
This is the crate where the bulk of the code is at. egui
depends only on emath
and epaint
.
emath
: minimal 2D math library
Examples: Vec2, Pos2, Rect, lerp, remap
epaint
2d shapes and text that can be turned into textured triangles.
Example: Shape::Circle { center, radius, fill, stroke }
Depends on emath
, ab_glyph
, atomic_refcell
, ahash
.
epi
Depends only on egui
.
Adds a thin application level wrapper around egui
for hosting an egui
app inside of eframe
.
egui-winit
This crates provides bindings between egui
and winit.
The library translates winit events to egui, handled copy/paste, updates the cursor, open links clicked in egui, etc.
egui_web
Puts an egui app inside the web browser by compiling to WASM and binding to the web browser with js-sys
and wasm-bindgen
. Paints the triangles that egui outputs using WebGL.
egui_glium
Puts an egui app inside a native window on your laptop. Paints the triangles that egui outputs using glium.
egui_glow
Puts an egui app inside a native window on your laptop. Paints the triangles that egui outputs using glow.
eframe
A wrapper around egui_web
+ egui_glium
, so you can compile the same app for either web or native.
The demo that you can see at https://emilk.github.io/egui/index.html is using eframe
to host the egui
. The demo code is found in:
egui_demo_lib
Depends on egui
+ epi
.
This contains a bunch of uses of egui
and looks like the ui code you would write for an egui
app.
egui_demo_app
Thin wrapper around egui_demo_lib
so we can compile it to a web site or a native app executable.
Depends on egui_demo_lib
+ eframe
.
Other integrations
There are also many great integrations for game engines such as bevy
and miniquad
which you can find at https://github.com/emilk/egui#integrations.