Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
L

learn-opengl-rs

> 编程语言
Open source

Rust port of JoeyDeVries/LearnOpenGL

1.0K stars0 likes0 views
WebsiteGitHub

About

Rust port of JoeyDeVries/LearnOpenGL

learn-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 unsafe blocks.

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 cargo and copy the dependency section from Cargo.toml. Only glfw-rs might 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 tobj is used instead of assimp (simpler interface, pure Rust and later tutorials only load OBJ files anyway). For alternatives see here and here.
  • The image crate 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 . 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.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rustopenglrust

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言