bwasty/learn-opengl-rs
bwasty/learn-opengl-rs has 1,038 GitHub stars and 72 forks. GitHot measured 0 stars in 24 hours and +2 in 7 days. Last checked 2026-11-12 08:23 UTC. Last push 2021-12-22.
Rust port of JoeyDeVries/LearnOpenGL
Measured star growth
- in 24h
- 0
- in 7 days
- +2
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originallearn-opengl-rs 
Rust port of https://github.com/JoeyDeVries/LearnOpenGL
You should be able to follow the tutorials at https://learnopengl.com/ with this - the code structure has been kept similar to the original C++ wherever possible.
This also means it's not necessarily the most idiomatic Rust code. For example, some standard naming convention lints are disabled and all OpenGL calls are "raw" and wrapped in
unsafeblocks.
Run individual tutorials like this:
cargo run 1_3_2 (for /src/_1_getting_started/_3_2_shaders_interpolation.rs).
For reduced compilation times, you may only compile the code for a certain chapter by adding --no-default-features --features chapter-1 for example.
Chapters
1. Getting started
Notes
- You can mostly ignore the setup instructions at Getting-started/Creating-a-window. Just create a new project with
cargoand copy the dependency section from Cargo.toml. Onlyglfw-rsmight need some more setup, see here for details. You can also use glutin (a pure Rust alternative to GLFW), but the API is a bit different, so following the tutorials might not be as straight-forward. - You might be tempted to use glium instead of raw OpenGL. I'd recommend against that, at least in the beginning, to get a good understanding of how OpenGL really works. Also, glium is not actively maintained at the moment.
- If you experience black screens or weird rendering artifacts, check out the
glCheckError!macro from chapter 7. - exercises have been mostly omitted. You can look up the solutions in the original C++ source.
2. Lighting
3. Model loading
Notes
- For simplicity
tobjis used instead ofassimp(simpler interface, pure Rust and later tutorials only load OBJ files anyway). For alternatives see here and here. - The
imagecrate is quite slow in debug mode - loading the nanosuit textures takes so much time that it can be faster to use release mode (including compile time).
4. Advanced OpenGL
Status: complete
5. Advanced Lighting
Status: partially done (4/9).
6. PBR
Status: partially done (1/2).
7. In Practice
Status: Debugging complete (the other two are not in the repo)
A note about the code organization
Originally each tutorial was a separate executable (using src/bin and cargo run --bin <name>. This didn't play very well with the RLS and clippy (-> rust-lang-nursery/rls#132). Now all are integrated into the main binary, which leads to long compile times. As a workaround there are now feature flags for each chapter.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
562,156 starspublic-apis/public-apis
A collective list of free APIs
498,555 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
455,474 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,403 stars




