OGLoPP

What is OGLoPP?

[O]pen[GL] for [o]object-oriented C-[P]lus-[P]lus, is a library for C++ designed to abstract many of the functional programming annoyances of opengl into a neat, object-oriented interface. Programs built using OGLoPP can have a wide range of functionally, from CLI GPU-accelerated applications, to 2D desktop applications, up to 3D high-framerate simulations and games. OGLoPP was originally designed for science visualizations, but it can be used to build games as well.
OGLoPP is currently only capable of rendering and computing, however in the future it's intended to implement clean solutions for physics, networking, audio, and more.

Building and Installing

OGLoPP uses make as its build system. A make help rule is available to view all available targets for building. Before building, you must ensure that the dependencies are installed.

Required Dependencies


libglfw
libglm
stb-image.h

Installation Procedure


# Step 1: download source code
git clone https://github.com/SebOuellette/oglopp.git

# Step 2: Change directory into oglopp
cd oglopp

# Step 3: Compile project
cmake -S . -B build

# Step 4: Build liboglopp.so
make -C build

# Step 5: Install OGloPP
sudo make -C build install

# OGLoPP can now be linked into your programs using '-loglopp' (and '-lglfw' if you use glfw directly)

Uninstalling OGLoPP


# Reverse step 5, remove all traces of OGLoPP
sudo make -C build uninstall

Building Example Programs


# You can also build examples
make -C build examples
# Examples are placed in ./build/bin

Building Doxygen Documentation


# Compile HTML from source code
make -C build docs

# You can now open the output in your favourite browser
firefox ./docs/doxygen/html/index.html

Supported Platforms

OpenGL/GLFW/GLM are cross-platform, so ideally OGLoPP will eventually be available on all operating systems supported by OpenGL. OGLoPP was designed for Linux first, specifically Arch Linux, and may not work on other distributions, cpu architectures, or operating systems. Below is a list of systems and their known status.
Platform Status Description
ArchLinux Supported OGLoPP is developed using ArchLinux systems. Issues are quickest to be detected for this distribution. Any distribution that allows packages to be installed to /usr/lib and /usr/include should in theory be able to run OGLoPP.
Linux Likely Supported OGLoPP has not been tested on all Linux distributions, but it was designed for Linux. It is likely that OGLoPP can be configured to work properly on most or all distributions.
Windows Unsupported The current 'Makefile' solution is Unix-specific. Will need a conversion to cmake and/or a visual studio solution to be created.

Projects using OGLoPP

Name Description Preview
Sketch-ML GitHub 2D machine learning application capable of using OGLoPP compute shaders to reconstruct hand-drawn digits at upwards of 120 frames per second. (RX6900XT)
ParticleBox Particle simulator capable of simulating upwards of 1 billion particles. (Although not all particles interact with each other)
Cubegame 3D Infinite voxel world (vertically and horizonally) with textures and chunk generation.
Have you used OGLoPP for a project? Tell me about it! Email: i-used-oglopp [at] honeybeeks.net