https://github.com/rinuya/simpleglrenderer
A simple 3D renderer written with OpenGL
https://github.com/rinuya/simpleglrenderer
cpp glsl graphics-programming opengl
Last synced: 8 days ago
JSON representation
A simple 3D renderer written with OpenGL
- Host: GitHub
- URL: https://github.com/rinuya/simpleglrenderer
- Owner: rinuya
- Created: 2025-08-11T17:17:00.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-26T10:57:25.000Z (11 months ago)
- Last Synced: 2025-08-26T13:35:41.642Z (11 months ago)
- Topics: cpp, glsl, graphics-programming, opengl
- Language: C++
- Homepage:
- Size: 34.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SimpleGLRenderer
## Info

### Description
A simple renderer build with OpenGL on Linux (Ubuntu).
### Setup
Clone the repo including submodules:
```bash
git clone --recurse-submodules
cd
```
If you already cloned without submodules, run:
```bash
git submodule update --init --recursive
```
To update later:
```bash
git pull --recurse-submodules
git submodule update --recursive --remote
```
Then install the following dependencies (assumes Ubuntu 24 or later):
`sudo apt install libglm-dev` -> math lib for opengl
`sudo apt install libglfw3-dev` -> glfw3
`sudo apt install libassimp-dev` -> assimp
### Building the project
```bash
cd build
cmake ..
make
./renderer
```
### Features
- **Asset Loading:** Load 3D models via [Assimp](https://www.assimp.org/).
- **Shaders & Lighting:** Phong shading with a flexible light manager system.
- **User Interface:** Integrated UI using [Dear ImGui](https://github.com/ocornut/imgui).
- **Window Management:** Abstracted window handling and OpenGL context setup.
- **Utilities:** Helper functions for loading models and other assets.
- **Camera:** First-person camera with Unreal Engine-style controls (hold right mouse button to navigate).
- **Scene Graph:** Basic scene graph with entities, transforms, meshes, models, and hierarchical structure.
- **Mesh Factory:** Easily create common 3D geometry like boxes, planes, and spheres.
### Styleguide
Using VSCode, the C++ style of choice is **Chromium**.
`"C_Cpp.clang_format_style": "Chromium",`