finds.dev← search

// the find

grovesNL/glow

★ 1,483 · Rust · Apache-2.0 · updated May 2026

GL on Whatever: a set of bindings to run GL anywhere and avoid target-specific code

glow is a Rust abstraction layer over OpenGL, OpenGL ES, and WebGL that gives you one API regardless of whether you're targeting native or WASM. It's used under the hood by egui and wgpu's GL backend, so if you've used either of those you've already depended on it. Aimed at Rust graphics developers who need to write GL code once and have it run everywhere.

Single Context trait covers native GL and web_sys WebGL2, so the same drawing code genuinely compiles for both targets without #[cfg] sprawl. It's generated from the Khronos XML spec (see generate-native.sh), which means the bindings track the official source rather than being hand-maintained. Rust type safety wraps raw GL integers in newtypes, catching the classic 'passed a texture where a buffer was expected' class of bugs at compile time. Triple-licensed Apache/MIT/zlib, which covers every common dependency policy.

The README is nearly empty — two build commands and a license block. If you don't already know GL, you're on your own figuring out how to actually use this. Only one real example (hello triangle), and the howto example is similarly thin. OpenGL itself is the actual problem: this doesn't hide GL's stateful, error-prone nature, it just normalizes the call surface; you still need to manage state machines, draw call ordering, and framebuffer binds yourself. Activity is light — a few commits per year — which is fine for a mature binding crate but means don't expect quick responses to issues.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →