https://github.com/voldien/opengl-samples
OpenGL Samples - Basic to Advanced
https://github.com/voldien/opengl-samples
cpp graphics graphics-programming opengl opengl-api opengl-samples
Last synced: 6 months ago
JSON representation
OpenGL Samples - Basic to Advanced
- Host: GitHub
- URL: https://github.com/voldien/opengl-samples
- Owner: voldien
- License: mit
- Created: 2020-11-04T18:12:47.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2025-03-20T06:43:50.000Z (7 months ago)
- Last Synced: 2025-03-20T07:37:24.756Z (7 months ago)
- Topics: cpp, graphics, graphics-programming, opengl, opengl-api, opengl-samples
- Language: C++
- Homepage:
- Size: 2.47 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/voldien/opengl-samples/actions/workflows/linux-build.yml)
[](https://opensource.org/licenses/MIT)# OpenGL Sample Repository - Work In Progress

A collection of OpenGL Samples, work in progress, for personal educational purposes.
## CLI - Command Line Options
```bash
Usage:
OpenGL Sample: GLSample [OPTION...]GLSample options:
-h, --help helper information.
-d, --debug Enable Debug View. (default: true)
-t, --time arg How long to run sample (default: 0)
-f, --fullscreen Run in FullScreen Mode
-v, --vsync Vertical Blank Sync
-g, --opengl-version arg OpenGL Version (default: -1)
-F, --filesystem arg FileSystem (default: .)
-r, --renderdoc Enable RenderDoc
-G, --gamma-correction Enable Gamma Correction
-W, --width arg Set Window Width (default: -1)
-H, --height arg Set Window Height (default: -1)
-D, --display arg Display (default: -1)
-m, --multi-sample arg Set MSAA (default: 0)
-p, --use-postprocessing Use Post Processing (default: true)
-s, --glsl-version arg Override glsl version from system
```## Graphic Based Samples
### [**Triangle**](Samples/Triangle)

### [**Texture**](Samples/Texture)

### [**Point Lights**](Samples/PointLight)
### 
### [**Normal Mapping**](Samples/NormalMap)
### [**SkyBox Cubemap**](Samples/Skybox)

### [**SkyBox Panoramic**](Samples/Skybox)

### [**Fog**](Samples/Fog)

### [**Simple Reflection**](Samples/SimpleReflection/)
### [**Irradiance**](Samples/Irradiance/)
### [**Instance**](Samples/Instance)

### [**SubSurface Scattering**](Samples/SubSurfaceScattering)

### [**Normal**](Samples/Normal)

### [**Blinn - Phong**](Samples/PhongBlinn/)

### [**Terrain**](Samples/Terrain/)

### [**FrustumCulling**](Samples/Frustum/)

### [**Shadow Map**](Samples/ShadowMapping/)

### [**Shadow Map PCF**](Samples/ShadowMapping/)

### [**Point Shadow Light**](Samples/ShadowPointLight/)

### [**Shadow Projection**](Samples/ProjectedShadow/)

### [**Shadow Map Variance**](Samples/ShadowVariance/)
### **Shadow Volume**
### [**Tessellation Basic**](Samples/Tessellation/)
### [**MipMap Visual**](Samples/MipMapVisual/)

### [**Multipass**](Samples/MultiPass/)

### [**Deferred Rendering**](Samples/Deferred/)
### [**Ambient Occlusion**](Samples/AmbientOcclusion/)



### **Physical Based Rendering**
### [**Panoramic**](Samples/Panoramic/)

### [**Skinned Mesh**](Samples/SkinnedMesh/)
### [**Simple Ocean**](Samples/SimpleOcean/)

### [**Video Playback**](Samples/VideoPlayback/)
## Compute Shader Base Examples
### [**Ray Tracing**](Samples/RayTracing/Ray/)
### [**Game Of Life**](Samples/GameOfLife)

### [**Mandelbrot**](Samples/Mandelbrot/)

### [**ReactionDiffusion**](Samples/ReactionDiffusion)
### [**Vector Field 2D**](Samples/VectorField2D/)

### [**Compute Group Visual**](Samples/ComputeGroupVisual/)

### [**Marching Cube**](Samples/MarchingCube/)

### [**Rigidbody**](Samples/Rigidbody/)

## PostProcessing Effects
- **Chromatic Aberration**
- **Sobel Edge Detection**
- **Screen Space Ambient Occlusion**
- **Gaussian/Box Blur**
- **Mist Fog**
- **Volumetric Scattering**

- **ColorSpace**
- **Pixelate**
- **Grain**
- **Bloom**
- **Contact Shadow**
## Required Packages
```bash
apt-get install pkg-config libsdl2-dev libfreeimage-dev libfmt-dev libglm-dev libgtest-dev googletest mesa-common-dev mesa-utils libopenal-dev libalut-dev
apt-get install glslang-tools libassimp-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev binutils-dev libeigen3-dev libglu1-mesa-dev libbz2-dev \
libzip-dev libogg-dev libopus-dev libvorbis-dev
```## Build Instruction
```bash
git submodule update --init --recursive
mkdir build && cd build
cmake ..
make
make DownloadAsset
```## License
This project is licensed under the GPL+3 License - see the [LICENSE](LICENSE) file for details
Models downloaded from Morgan McGuire's [Computer Graphics Archive](https://casual-effects.com/data)
## Misc Notes
### Force NVIDIA Usage
Force the system to try to use the NVIDIA GPU. This is very useful when using a system with multiple GPUs.
```bash
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia program arguments
```