Simple, performant and compatible 2D rendering crate.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jens Pitkänen 2775f9cd7a Rewrite parts of GlyphCache and implement eviction 1 day ago
examples Rewrite parts of GlyphCache and implement eviction 2 hours ago
src Rewrite parts of GlyphCache and implement eviction 2 hours ago
.gitignore Remove accidentally added file, prevent future accidents 9 months ago
Cargo.lock Update todos and rename Renderable to Sprite 4 days ago
Cargo.toml Update deps, add `log`, remove FAE_OPENGL_LEGACY 4 days ago Add license, set windows subsystem in examples 1 year ago Update deps, add `log`, remove FAE_OPENGL_LEGACY 4 days ago Simplify version selection 3 weeks ago


Fae is a simple, performant, and compatible 2D rendering crate built on top of glutin, with optional text rendering functionality.

Fae’s main design goals are simplicity and performance while supporting older/low-end target platforms. The optional text-rendering feature text can draw simple text with the font8x8 crate, or more sophisticated TTF-based text via font-kit (WIP).

Fae supports OpenGL 2.1 and OpenGL ES 2.0 contexts, but will do some optimizations (VAOs, instanced rendering) if a newer context (3.3+/ES 3.0+) is available.

This is not a serious contender intended to replace any general 2D rendering crates. I’m developing this as an exercise to learn about OpenGL and font rendering, with an eventual goal of being usable for my own applications. Use with caution!

Important note

Fae is currently under development, and I wouldn’t recommend it for any kind of usage yet. It’s on mostly so I don’t have to come up with another name :)

Cargo features

  • The png feature implements the Image::from_png function, which allows you to load images from PNG data. This is a very convenient feature, but not necessarily a requirement for using the crate, so it’s optional. Also, it adds some executable size, so use with caution, if you’re going for minimalism.
  • The text feature implements the text mod, which has functionality for drawing strings. If font8x8 is enabled as a feature (which it is, by default), you can draw text with a simple 8x8 bitmap-based font. If font-kit is enabled, you can draw text with any font provided by it (WIP).
  • The profiler feature implements the profiler mod. Everything in the minreq::profiler module is a no-op if this feature is disabled.

Issues / contributing

If you come across bugs, other issues or feature requests, feel free to open an issue on GitHub. Pull requests are welcome as well, though keep in mind that this is supposed to be a relatively minimalistic crate, so I probably won’t include any considerable new functionality. If in doubt, open an issue!


The fae crate is distributed under the MIT license.