Rust Graphics Crates

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.

Game Frameworks

Although they consider themselves "game frameworks," they can, of course, be used as a general graphics engine.

  • ggez Crates.io (recent)
    • Backend: gfx (not gfx-hal)
      • OpenGL 2.1+
      • OpenGL ES2+ (works on Android as well as WebGL2)
      • Direct3D 11
  • bevy Crates.io (recent)
    • Backends:
      • wgpu
      • WebGL

High-Level

These should allow you to render something with relative ease.

  • piet Crates.io (recent)
    • Custom Backend With Support For:
      • Cairo
      • Core Graphics
      • Direct2D
      • Web
  • macroquad Crates.io (recent)
    • Backend: miniquad
  • pathfinder Crates.io (recent)
    • Custom Backend With Support For:
      • OpenGL 3
      • OpenGL ES 3
      • WebGL 2
      • Metal
  • skulpin Crates.io (recent)
    • Backend: Skia + Vulkan

Simple

These crates provide a simple framebuffer.

  • softbuffer Crates.io (recent)
    • 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 Crates.io (recent)
    • Backend: wgpu
  • minifb Crates.io (recent)
    • Put a user-created 2D buffer on a window without relying on GPU infrastructure (does own window managemetn)

Low-Level

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 Crates.io (recent)
    • Backends:
      • gfx-hal (including WebGL)
      • WebGPU
  • miniquad Crates.io (recent)
    • Custom Backend With Support For:
      • OpenGL 3
      • OpenGL ES 3
      • WebGL 1
  • gfx-hal Crates.io (recent)
    • Backends:
      • Vulkan (via ash)
      • Direct3D 12
      • Direct3D 11
      • Metal (via metal)
      • OpenGL ES-3 (via glow)
      • WebGL (via glow)
  • vulkano Crates.io (recent)
    • Backend: Vulkan
  • rust-sdl2 Crates.io (recent)
    • Backend: SDL2
  • ash Crates.io (recent)
    • Backend: Vulkan
  • metal Crates.io (recent)
    • Backend: Metal
  • glow Crates.io (recent)
    • Backends:
      • OpenGL
      • OpenGL ES
      • WebGL