Thanks to visit codestin.com
Credit goes to lib.rs

#sdl2 #egui

egui-sdl2

egui + SDL2: event handling and rendering via OpenGL, Canvas, WebGPU

7 releases

0.2.5 Oct 10, 2025
0.2.4 Oct 3, 2025
0.1.0 Sep 30, 2025

#447 in GUI

MIT/Apache

74KB
1.5K SLoC

CI Dependencies crates.io Documentation MIT Apache

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-backend feature)
  • OpengGL via glow (glow-backend feature)
  • WebgGPU via 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.

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