<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Building Graphics with wgpu in Rust on TutorialEdge.net</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/</link><description>Recent content in Building Graphics with wgpu in Rust on TutorialEdge.net</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 29 May 2026 10:00:00 +0000</lastBuildDate><atom:link href="https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/index.xml" rel="self" type="application/rss+xml"/><item><title>Part 1 - Project Setup and Your First Window</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-1-project-setup-and-first-window/</link><pubDate>Fri, 29 May 2026 10:01:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-1-project-setup-and-first-window/</guid><description>Welcome to the first part of this series on graphics programming with wgpu in Rust! By the end of this article, you&amp;rsquo;ll have a Rust program that opens a window and responds to input events. It doesn&amp;rsquo;t draw anything yet, but it&amp;rsquo;s the skeleton that everything else will hang from.
##What is wgpu? wgpu is a Rust graphics library that talks to your GPU using whichever native API your platform provides — Vulkan on Linux, Metal on macOS, DirectX 12 on Windows, and WebGPU in the browser.</description></item><item><title>Part 2 - The Render Pipeline</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-2-the-render-pipeline/</link><pubDate>Fri, 29 May 2026 10:02:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-2-the-render-pipeline/</guid><description>In Part 1 we opened a window. In this part, we connect that window to the GPU and draw our first frame — a solid colour fill. It&amp;rsquo;s a modest result, but it means the full rendering pipeline is working end-to-end.
##How the GPU Pipeline Works Before writing code, here&amp;rsquo;s the mental model you need.
Your CPU sends commands to the GPU. It doesn&amp;rsquo;t tell the GPU to draw individual pixels — it records a list of operations into a command encoder, then submits that list to a queue.</description></item><item><title>Part 3 - Drawing Your First Triangle</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-3-drawing-your-first-triangle/</link><pubDate>Fri, 29 May 2026 10:03:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-3-drawing-your-first-triangle/</guid><description>The triangle is the &amp;ldquo;hello world&amp;rdquo; of graphics programming. In this part we define vertex data, upload it to the GPU, write our first shaders in WGSL, and draw a colourful triangle to the screen.
Add bytemuck to Cargo.toml before you start:
Cargo.toml [dependencies] wgpu = &amp;#34;0.20&amp;#34; winit = &amp;#34;0.29&amp;#34; pollster = &amp;#34;0.3&amp;#34; env_logger = &amp;#34;0.11&amp;#34; log = &amp;#34;0.4&amp;#34; bytemuck = { version = &amp;#34;1.14&amp;#34;, features = [&amp;#34;derive&amp;#34;] } ##What is a Vertex Buffer?</description></item><item><title>Part 4 - Colors and Uniforms</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-4-colors-and-uniforms/</link><pubDate>Fri, 29 May 2026 10:04:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-4-colors-and-uniforms/</guid><description>So far our triangle is static. In this part we add a CPU-to-GPU data channel called a uniform buffer, and use it to animate the triangle&amp;rsquo;s colour tint every frame.
##What is a Uniform Buffer? A uniform is a value that stays constant across all vertices and fragments in a single draw call, but can be updated between frames. It&amp;rsquo;s how you pass per-frame data — time, camera position, colour — from your Rust code into the shader.</description></item><item><title>Part 5 - Textures and Image Loading</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-5-textures-and-image-loading/</link><pubDate>Fri, 29 May 2026 10:05:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-5-textures-and-image-loading/</guid><description>A triangle is a great proof-of-concept, but most real graphics involve images. In this part we load a PNG, upload it to the GPU as a texture, and sample it onto a textured quad.
Add the image crate to Cargo.toml:
Cargo.toml [dependencies] wgpu = &amp;#34;0.20&amp;#34; winit = &amp;#34;0.29&amp;#34; pollster = &amp;#34;0.3&amp;#34; env_logger = &amp;#34;0.11&amp;#34; log = &amp;#34;0.4&amp;#34; bytemuck = { version = &amp;#34;1.14&amp;#34;, features = [&amp;#34;derive&amp;#34;] } image = &amp;#34;0.25&amp;#34; Place any PNG image at assets/happy-tree.</description></item><item><title>Part 6 - 2D Transformations</title><link>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-6-2d-transformations/</link><pubDate>Fri, 29 May 2026 10:06:00 +0000</pubDate><guid>https://tutorialedge.net/projects/graphics-with-wgpu-in-rust/part-6-2d-transformations/</guid><description>Static images are a start, but real graphics need to move. In this part we apply a transformation matrix to the vertex shader so we can rotate and scale the textured quad every frame.
Add glam to Cargo.toml:
Cargo.toml [dependencies] wgpu = &amp;#34;0.20&amp;#34; winit = &amp;#34;0.29&amp;#34; pollster = &amp;#34;0.3&amp;#34; env_logger = &amp;#34;0.11&amp;#34; log = &amp;#34;0.4&amp;#34; bytemuck = { version = &amp;#34;1.14&amp;#34;, features = [&amp;#34;derive&amp;#34;] } image = &amp;#34;0.25&amp;#34; glam = { version = &amp;#34;0.</description></item></channel></rss>