| Crates.io | egor |
| lib.rs | egor |
| version | 0.8.0 |
| created_at | 2025-04-28 03:00:37.135142+00 |
| updated_at | 2026-01-26 00:03:53.408157+00 |
| description | A dead simple 2D graphics engine |
| homepage | |
| repository | https://github.com/wick3dr0se/egor |
| max_upload_size | |
| id | 1651722 |
| size | 7,238,455 |
Egor is dead simple, lightweight and cross-platform. The same code runs on native and web (WASM) with minimal boilerplate. It's is built from small, composable crates on top of modern graphics and windowing abstractions
Egor gives you the essentials for 2D apps and games:
| Target | Backend(s) | Status |
|---|---|---|
| Windows | DX12, Vulkan, OpenGL | ✅ Stable |
| MacOS | Metal, Vulkan (MoltenVK) | ✅ Stable |
| Linux | Vulkan, OpenGL | ✅ Stable |
| Web (WASM) | WebGPU, WebGL2 | ✅ Working |
[!NOTE] Mobile (Android/iOS) isn't (intended to be) supported & neither is touch input
Add egor to your project:
cargo add egor
Example:
let mut position = Vec2::ZERO;
App::new()
.title("Egor Stateful Rectangle")
.run(move |FrameContext { gfx, input, timer, .. } | {
let dx = input.key_held(KeyCode::ArrowRight) as i8
- input.key_held(KeyCode::ArrowLeft) as i8;
let dy =
input.key_held(KeyCode::ArrowDown) as i8 - input.key_held(KeyCode::ArrowUp) as i8;
position += vec2(dx as f32, dy as f32) * 100.0 * timer.delta;
gfx.rect().at(position).color(Color::RED);
})
To see more of egor in action, check out demos/
[!TIP] Running a demo for WASM? You’ll need to move index.html into a demo, or just use the included run.sh script (see usage). It simplifies running native, WASM & hot-reload builds
For full documentation see the official docs
Simply run cargo:
cargo run
Run trunk (defer to Trunk docs for setup):
trunk serve
Compile with the hot_reload feature enabled. Hot reload will automatically wrap AppHandler::update when the feature is active
Run dioxus-cli (defer to Dioxus CLI docs for setup):
dx serve --hot-patch
[!NOTE] Subsecond hot-reloading is experimental; native is working
egor is moving fast. Before opening a PR or submitting a change, please read CONTRIBUTING.md
Check out some issues, open a new one, drop a PR or come hang in Discord
egor is maintained with ❤️ by Open Source Force