This is an opinionated list of modern graphics crates in Rust. I noticed it was really hard to keep track of all the good graphics crates going around, so I made this to help me and others. The categories are more based on grouping crates with similar levels of abstraction and less to do with the category name itself. I'm happy to take PRs, but I want to make sure all the crates on the list are actively maintained and has promise.
Although a bit outdated, icefoxen, author of ggez, wrote a great article about the current state of graphics crates back in May of 2019. A lot of what's said is still applicable today and can be found here.
Although they consider themselves "game frameworks," they can, of course, be used as a general graphics engine.
- ggez
- Backend: gfx (not gfx-hal)
- OpenGL 2.1+
- OpenGL ES2+ (works on Android as well as WebGL2)
- Direct3D 11
- Backend: gfx (not gfx-hal)
- bevy
- Backends:
- wgpu
- WebGL
- Backends:
These should allow you to render something with relative ease.
- piet
- Custom Backend With Support For:
- Cairo
- Core Graphics
- Direct2D
- Web
- Custom Backend With Support For:
- macroquad
- Backend: miniquad
- pathfinder
- Custom Backend With Support For:
- OpenGL 3
- OpenGL ES 3
- WebGL 2
- Metal
- Custom Backend With Support For:
- skulpin
- Backend: Skia + Vulkan
These crates provide a simple framebuffer.
- softbuffer
- Put a user-created 2D buffer on a window without relying on GPU infrastructure (like minifb but integrates with raw-window-handle to work with winit and other standard window management libraries)
- pixels
- Backend: wgpu
- minifb
- Put a user-created 2D buffer on a window without relying on GPU infrastructure (does own window managemetn)
These will give you a lot of control over how rendering is done, but will take a lot more work/code than a higher-level crate
- wgpu
- Backends:
- gfx-hal (including WebGL)
- WebGPU
- Backends:
- miniquad
- Custom Backend With Support For:
- OpenGL 3
- OpenGL ES 3
- WebGL 1
- Custom Backend With Support For:
- gfx-hal
- Backends:
- Vulkan (via
ash
) - Direct3D 12
- Direct3D 11
- Metal (via
metal
) - OpenGL ES-3 (via
glow
) - WebGL (via
glow
)
- Vulkan (via
- Backends:
- vulkano
- Backend: Vulkan
- rust-sdl2
- Backend: SDL2
- ash
- Backend: Vulkan
- metal
- Backend: Metal
- glow
- Backends:
- OpenGL
- OpenGL ES
- WebGL
- Backends: