# rodrigcasio/opengl-rcasio-projects architecture

> Architecture diagram of the GitHub repository rodrigcasio/opengl-rcasio-projects, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rodrigcasio/opengl-rcasio-projects
- Repository: https://github.com/rodrigcasio/opengl-rcasio-projects

## Overview

This repository is a sequence of standalone OpenGL learning projects, progressing from window creation to triangles, shader programs, textures, and 2D transformations. The user-facing workflow is to launch a chapter’s application, interact with its rendered scene, and observe the graphics concepts introduced there. Sampled entrypoints show GLFW window/input handling, GLAD initialization, buffer setup, shader use, and texture loading. Later unsampled chapters are represented only where their directory names support the capability; the README describes the local build-and-launch workflow, not additional runtime features.

Main entry points: [`04-textures/src/main.cpp`](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-textures/src/main.cpp) (Texture Chapter), [`04-ex2/src/main.cpp`](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-ex2/src/main.cpp) (Texture Exercises), [`05-transformations/src/main.cpp`](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-transformations/src/main.cpp) (Transform Chapter), [`05-ex2/src/main.cpp`](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-ex2/src/main.cpp) (Transform Exercises)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_window["Window Basics"]
  node_window_app["Window Example<br/>[main.cpp]"]
end

subgraph group_geometry["Geometry and Shaders"]
  node_triangle_app["Hello Triangle<br/>[main.cpp]"]
  node_triangle_exercises["Triangle Exercises<br/>[main.cpp]"]
  node_shader_chapter["Shader Chapter<br/>[main.cpp]"]
  node_shader_helper["Shader Helper<br/>[shader.cpp]"]
end

subgraph group_textures["Textures"]
  node_texture_chapter["Texture Chapter<br/>[main.cpp]"]
  node_texture_exercises["Texture Exercises<br/>[main.cpp]"]
  node_image_decoder["Image Decoder<br/>[stb_image.cpp]"]
end

subgraph group_transforms["Transformations"]
  node_transform_chapter["Transform Chapter<br/>[main.cpp]"]
  node_transform_exercises["Transform Exercises<br/>[main.cpp]"]
end

node_learner(("Learner"))
node_glfw["GLFW"]
node_glad_loader["GLAD Loader<br/>[glad.c]"]
node_opengl["OpenGL"]

node_learner -->|"launches"| node_window_app
node_learner -->|"launches"| node_triangle_app
node_learner -->|"launches"| node_triangle_exercises
node_learner -->|"launches"| node_shader_chapter
node_learner -->|"launches"| node_texture_chapter
node_learner -->|"launches"| node_texture_exercises
node_learner -->|"launches"| node_transform_chapter
node_learner -->|"launches"| node_transform_exercises
node_window_app -->|"creates window"| node_glfw
node_triangle_app -->|"creates window"| node_glfw
node_triangle_app -->|"initializes"| node_glad_loader
node_triangle_app -->|"compiles and draws"| node_opengl
node_triangle_exercises -->|"creates window"| node_glfw
node_triangle_exercises -->|"configures and draws"| node_opengl
node_shader_chapter -->|"creates window"| node_glfw
node_shader_chapter -->|"configures and draws"| node_opengl
node_shader_chapter -->|"constructs shader"| node_shader_helper
node_texture_chapter -->|"creates window"| node_glfw
node_texture_chapter -->|"uploads and draws"| node_opengl
node_texture_chapter -->|"constructs shader"| node_shader_helper
node_texture_chapter -->|"loads image"| node_image_decoder
node_texture_exercises -->|"creates window"| node_glfw
node_texture_exercises -->|"uploads and draws"| node_opengl
node_texture_exercises -->|"constructs shader"| node_shader_helper
node_texture_exercises -->|"loads image"| node_image_decoder
node_transform_chapter -->|"creates window"| node_glfw
node_transform_chapter -->|"transforms and draws"| node_opengl
node_transform_chapter -->|"constructs shader"| node_shader_helper
node_transform_chapter -->|"loads image"| node_image_decoder
node_transform_exercises -->|"creates window"| node_glfw
node_transform_exercises -->|"transforms and draws"| node_opengl
node_transform_exercises -->|"constructs shader"| node_shader_helper
node_transform_exercises -->|"loads image"| node_image_decoder

click node_window_app "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/01-creating-a-window/src/main.cpp"
click node_triangle_app "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-hello-triangle/src/main.cpp"
click node_triangle_exercises "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-ex2/src/main.cpp"
click node_shader_chapter "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/03-shaders/src/main.cpp"
click node_shader_helper "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/03-shaders/src/shader.cpp"
click node_texture_chapter "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-textures/src/main.cpp"
click node_texture_exercises "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-ex2/src/main.cpp"
click node_image_decoder "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-textures/src/stb_image.cpp"
click node_transform_chapter "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-transformations/src/main.cpp"
click node_transform_exercises "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-ex2/src/main.cpp"
click node_glad_loader "https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-hello-triangle/src/glad.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_window_app toneBlue
class node_triangle_app,node_triangle_exercises,node_shader_chapter,node_shader_helper toneAmber
class node_texture_chapter,node_texture_exercises,node_image_decoder toneMint
class node_transform_chapter,node_transform_exercises toneRose
class node_learner,node_glfw,node_opengl toneIndigo
class node_glad_loader toneTeal
```

## Components

### Window Basics

- [Window Example](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/01-creating-a-window/src/main.cpp): `01-creating-a-window/src/main.cpp`

### Geometry and Shaders

- [Hello Triangle](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-hello-triangle/src/main.cpp): `02-hello-triangle/src/main.cpp`
- [Triangle Exercises](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-ex2/src/main.cpp): `02-ex2/src/main.cpp`
- [Shader Chapter](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/03-shaders/src/main.cpp): `03-shaders/src/main.cpp`
- [Shader Helper](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/03-shaders/src/shader.cpp): `03-shaders/src/shader.cpp`

### Textures

- [Texture Chapter](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-textures/src/main.cpp): `04-textures/src/main.cpp`
- [Texture Exercises](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-ex2/src/main.cpp): `04-ex2/src/main.cpp`
- [Image Decoder](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/04-textures/src/stb_image.cpp): `04-textures/src/stb_image.cpp`

### Transformations

- [Transform Chapter](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-transformations/src/main.cpp): `05-transformations/src/main.cpp`
- [Transform Exercises](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/05-ex2/src/main.cpp): `05-ex2/src/main.cpp`

### Other components

- **Learner**
- **GLFW**
- [GLAD Loader](https://github.com/rodrigcasio/opengl-rcasio-projects/blob/master/02-hello-triangle/src/glad.c): `02-hello-triangle/src/glad.c`
- **OpenGL**

## Connections

- Learner → Window Example: launches
- Learner → Hello Triangle: launches
- Learner → Triangle Exercises: launches
- Learner → Shader Chapter: launches
- Learner → Texture Chapter: launches
- Learner → Texture Exercises: launches
- Learner → Transform Chapter: launches
- Learner → Transform Exercises: launches
- Window Example → GLFW: creates window
- Hello Triangle → GLFW: creates window
- Hello Triangle → GLAD Loader: initializes
- Hello Triangle → OpenGL: compiles and draws
- Triangle Exercises → GLFW: creates window
- Triangle Exercises → OpenGL: configures and draws
- Shader Chapter → GLFW: creates window
- Shader Chapter → OpenGL: configures and draws
- Shader Chapter → Shader Helper: constructs shader
- Texture Chapter → GLFW: creates window
- Texture Chapter → OpenGL: uploads and draws
- Texture Chapter → Shader Helper: constructs shader
- Texture Chapter → Image Decoder: loads image
- Texture Exercises → GLFW: creates window
- Texture Exercises → OpenGL: uploads and draws
- Texture Exercises → Shader Helper: constructs shader
- Texture Exercises → Image Decoder: loads image
- Transform Chapter → GLFW: creates window
- Transform Chapter → OpenGL: transforms and draws
- Transform Chapter → Shader Helper: constructs shader
- Transform Chapter → Image Decoder: loads image
- Transform Exercises → GLFW: creates window
- Transform Exercises → OpenGL: transforms and draws
- Transform Exercises → Shader Helper: constructs shader
- Transform Exercises → Image Decoder: loads image
