website code
piLibs C++
This is the set of libraries I've been using since 2006 to make all of my demos, experiments and CG activities. These have been used in demoscene productions, art exhibitions, VJ sessions, Siggraph tech demos, private experiments and commercial products. It's std:: free, and they cover everything from OS abstraction to file formats, rendering, VR, sound, meshes, compression, etc. It's mostly coded in the very oldschool style of "C with classes", nothing C++ modern here (for no particular reason). Also, this is not an engine or a framework, instead it's a set of individual modules, of which I only include a few as I need in a per project basis. There's no dependencies with external libraries other than a very few little for VR and sound. Right now the Windows and Android implementation is the only maintained one, and it comes with Android and Visual Studio 2017 projects.

Other than for that, I should warn the whole things is by no means a serious effort into making a nicely packaged product. Coding style changes across modules (some code is 15 years old), but I keep rewriting parts as I extend or revisit the modules (these happen very frequently). I don't support this publically in any other place but this page for now. Besides myself, Pol Jeremias, Ian Wakelin, Pierre Lafayette, Irad Ratmansky and Sebastien Chevrel have contributed to the code. Oh, and they come with the MIT license.


Click here to get the latest update (05/29/2019, first update was 03/01/2015)

Module Category
libApp Contains the application entry point in an OS agnostic way.
libSystem Platform agnostic definition, and platform dependant implementation of Threads, Windows, Timers, Files, DLL/SO, Files, TCPIP, Critical Sections, Spinlocks, Mutex, Strings, etc.
libLog Message/Error/Warning output loging system (text and console)
libMath Basic (GLSL style) algebra, plus frustums, bounding volumes, random number generators, complex numbers, equation solvers, FFT, etc
libRender Very thin platform agnostic renderer (GL 4.5 feature set)
libHTTP HTTP and HTTPS support, servers/client classes and messaging system
libDataUtils Arrays, String, StringMap, Stack containers
libCompression Not compression algorithms per-se, but helper functions to transform your bits and data to make it more compressible
libImage Image storage. Loading from some simple file formats, and image manipulations
libMesh Mesh storage, construction, procedural generation, extrussion, etc
libWave Sound wave storage and conversions
libMisc Modules that haven't been moved to a better place yet. Includes UI drawing, Midi interface, rendering text, etc
libSound Basic support for sound input and output
libVR Abstraction for VR rendering
libCamera Webcam and Kinect camera support