7 releases
| 0.2.5 | Oct 10, 2025 |
|---|---|
| 0.2.4 | Oct 3, 2025 |
| 0.1.0 | Sep 30, 2025 |
#447 in GUI
74KB
1.5K
SLoC
egui-sdl2
This crate provides integration between egui and sdl2, including event handling and multiple rendering backends with a consistent API. It supports optional rendering backends:
- Software via
Canvas(canvas-backendfeature) - OpengGL via
glow(glow-backendfeature) - WebgGPU via
wgpu(wgpu-backendfeature)
The implementation is based on the design of the official egui-winit, egui_glow, egui-wgpu crates, aming to make it easy to use SDL2 with egui.
Both egui and sdl2 are re-exported for convenience. The sdl2 re-export includes all feature flags available to use.
Usage
// Create SDL2 window:
let sdl = sdl2::init().unwrap();
let video = sdl.video().unwrap();
let window = video.window("Egui SDL2 Canvas", 800, 600).build().unwrap();
// Create egui renderer:
let mut egui = egui_sdl2::EguiCanvas::new(window);
let mut event_pump = sdl.event_pump().unwrap();
loop {
// Feed SDL2 events into egui:
for event in event_pump.poll_iter() {
egui.on_event(&event);
}
// Call `run` + `paint` each frame:
egui.run(|ctx: &egui::Context| {});
egui.paint();
egui.present();
std::thread::sleep(std::time::Duration::from_secs_f64(1.0 / 60.0));
}
To get started, create an EguiGlow or EguiCanvas or EguiWgpu instance to manage rendering. Pass SDL2 events to on_event, then call run and paint each frame. For event handling only, you can use the State type.
Examples are available in the examples/ directory. To run the canvas example:
cargo run --example canvas
Dependencies
~21–37MB
~596K SLoC