Learning graphics programming feels intimidating at first. Shaders, pipelines, buffers, bind groups — it’s a lot of new vocabulary before you see anything on screen. This series cuts through that by building things you can actually run and see, one concept at a time.
We’re using wgpu — Rust’s modern GPU API that compiles to Vulkan, Metal, DirectX 12, and WebGPU. The concepts you learn here transfer directly to other graphics APIs and even to browser-based WebGPU.
What We’re Building
Each part adds one new graphics concept to a growing Rust program. By the end of the foundations arc, you’ll have a textured, animated 2D quad on screen — and a solid mental model of how the GPU pipeline works.
Along the way we’ll also pick up real Rust: structs, traits, lifetimes, error handling, and external crates — all in context, not in the abstract.
Prerequisites
- Rust installed (latest stable). Install from rustup.rs.
- A terminal and a text editor.
- No prior graphics programming experience needed.
Companion Repository
Every part of this series has a matching git tag in the companion repository so you can check out the exact code for any article:
git clone https://github.com/tutorialedge/graphics-with-wgpu-in-rust
git checkout part-3 # jump to any part
Series Outline
- Project Setup and Your First Window — cargo project, winit event loop, wgpu surface
- The Render Pipeline — GPU concepts, device/queue, clearing the screen to a colour
- Drawing Your First Triangle — vertex buffers, WGSL shaders, render pass
- Colors and Uniforms — uniform buffers, bind groups, passing data to shaders
- Textures and Image Loading — texture creation, sampling, bind group layouts
- 2D Transformations — transformation matrices, moving/rotating/scaling with glam