
Why Egor?
Egor is dead simple, lightweight, and cross-platform. The same code runs on native and web (WASM), with minimal boilerplate. Egor is built from small, composable crates on top of modern graphics and windowing abstractions
Egor provides essentials for 2D apps and games:
- Draw shapes and textures efficiently
- Handle input (keyboard & mouse)
- Move things with camera/world transforms
- Render text and simple fonts
- Build interactive UIs with optional egui integration
- Optionally hot-reload during development
Platform Support
| 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
Getting Started
Add egor to your project:
Example:
let mut position = ZERO;
new
.title
.run
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
Running a Native Build
Simply run cargo:
Running a WASM Build
Run trunk (defer to Trunk docs for setup):
Try Out Subsecond Hot-reloading
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):
[!NOTE] Subsecond hot-reloading is experimental; native is working
Contributing
egor is moving fast.. Got an idea, bugfix, or question? Check out some issues, open a new one, drop a PR, or come hang in Discord
egor is maintained with ❤️ by Open Source Force