egui on SDL2: SDL2 event handling plus three swappable rendering backends behind one consistent API.
- Three rendering backends, one API. Software (
Canvas), OpenGL (glow), and WebGPU (wgpu) — pick one with a feature flag and use the sameon_event/run/paintloop for all of them. - Tracks the latest egui. Kept in step with current egui releases so you are not stuck on an old version.
- Built on the official design. Mirrors the structure of the upstream
egui-winit,egui_glow, andegui-wgpucrates, so the API feels familiar and behaves predictably. - Batteries included. Translates SDL2 events into egui events and handles
egui::PlatformOutput(clipboard, cursor updates, opening links). Botheguiandsdl2are re-exported for convenience, and thesdl2re-export forwards all of SDL2's feature flags.
Enable exactly what you need via feature flags:
canvas-backend— software rendering viaCanvasglow-backend— OpenGL viaglowwgpu-backend— WebGPU viawgpu
// 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,
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 canvasLicensed under either of Apache License 2.0 or MIT license at your option.
