A repository for my personal workouts; a code lab. Code here is cross-platform and are generously embellished with comments and references to books and websites so that later on they can serve as tutorials to self and the community.

See the Wiki for some screen captures. Pre-built Windows binaries of some projects are available in the Downloads section; OpenGL workouts require a GPU supporting OpenGL 3.3 or later; make sure you've the latest video drivers installed; do not run them remotely. Use the GLversion workout to check the version your machine currently supports. CG code is tested on Linux and Windows with nVidia and Intel video drivers.


  • CG — Mid-sized projects to understand and implement various computer graphics concepts from the ground up. These projects are written from scratch to learn the very basics of CG and hence use no high-level libraries, just the bare minimum: OpenGL (3.0+ shader-based, for rendering), GLM (for vector, quaternion and matrix classes), GLI (for texture loading) and GLFW (for window creation). Everything else, right from primitives to collision detection to spatial data structures to frustum culling, was implemented manually as individual, stand-alone projects. Highlights:
  • Puyoncurses-based tile-matching game written in modern C++.
  • Language workouts with explanatory comments, references to books and StackOverflow posts
  • Misc — Miscellaneous code, markdown and configuration (dot) files.

Each directory in CG is an independent, self-contained project. The MSYS2 environment is used as the toolchain for development and building; some additionally use CMake or premake; read setup for details. Language workouts are all self-contained (each file is a complete unit) and need nothing more than a compiler.