#2d-graphics #wgpu #winit #graphics

egor

A stupid simple 2D graphics engine

1 unstable release

Uses new Rust 2024

new 0.1.0 Apr 28, 2025

#13 in #winit

MIT license

1MB
287 lines

egor

A stupid simple cross-platform 2D graphics engine

Features

Component Highlight
Windowing Pure Rust (no GLFW/SDL), WASM-ready
Primitive & Texture Rendering Zero-config builders with NDC conversion
Input Handling Snapshot polling (no callbacks)
Timing Delta time + FPS tracking

Getting Started

Get egor

cargo add --git https://github.com/wick3dr0se/egor

Example: Creating a window, clearing the surface and drawing a circle with 100 segments

App::init(|_ctx| {})
    .run(|ctx| {
        ctx.renderer.clear(Color::GREEN);

        ctx.renderer.circle().segments(100).draw();
    });

See more examples in examples/

You can run any examples with cargo or run the cross-platform example via bash run.sh [native|webgpu|webgl] [debug|relesae]. The script will execute either the former or trunk serve to run a web build, based on the arguments passed. It'll also setup a WASM target and trunk if needed

Platform Support

Target Backend(s) Status
Windows DX12, Vulkan, OpenGL ✅ Working
MacOS Metal, Vulkan (MoltenVK) ✅ Working
Linux Vulkan, OpenGL ✅ Working
Web (WASM) WebGPU, WebGL2 ✅ Working
Android Vulkan, OpenGL ES ⏳ Future
iOS Metal ⏳ Future

Roadmap

  • Text
  • Custom Shaders
  • Blend Modes
  • Camera System
  • Immediate UI

Contributing

Egor could always use help.. Feel free to open an issue or PR. Contributions are much appreciated!

Dependencies

~6–42MB
~658K SLoC