| Crates.io | egui-sdl2 |
| lib.rs | egui-sdl2 |
| version | 0.2.5 |
| created_at | 2025-09-30 20:08:23.254478+00 |
| updated_at | 2025-10-10 15:04:41.765347+00 |
| description | egui + SDL2: event handling and rendering via OpenGL, Canvas, WebGPU |
| homepage | https://github.com/mxmgorin/egui-sdl2 |
| repository | https://github.com/mxmgorin/egui-sdl2 |
| max_upload_size | |
| id | 1861675 |
| size | 134,068 |
This crate provides integration between egui and sdl2, including event handling and multiple rendering backends with a consistent API. It supports optional rendering backends:
Canvas (canvas-backend feature)glow (glow-backend feature)wgpu (wgpu-backend feature)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.
// 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