Home

Awesome

A Collection of C/C++ libraries for game development

<!-- TOC --> <!-- /TOC -->

System

Base

LibTitle
bkaradzic/bxBase library
septag/sxPortable base library for C programmers, tailored for performance and simplicity
nothings/stbstb single-file public domain libraries for C/C++
RandyGaul/cute_headersOne-file C/C++ libraries with no dependencies, primarily used for games
vurtun/mmxsingle header libraries for C/C++
zpl-c/zplYour C99 Powerkit
niklas-ourmachinery/bitsquid-foundationA minimalistic foundation library with functions for memory allocation, basic collections, etc. The library has been written with a data-oriented philosophy: POD structures are preferred over classes, flat arrays are the preferred data structure, etc.

Math

LibTitle
HypatiaPure C math library 2D/3D graphics. Seeks to be close to C89/C90 compliant for portability.
g-truc/glmOpenGL Mathematics (GLM)
recp/cglmOptimized OpenGL/Graphics Math (glm) for C
google/mathfuC++ math library developed primarily for games focused on simplicity and efficiency.
ferreiradaselva/mathcPure C math library for 2D and 3D programming
demianmnave/CMLThe Configurable Math Library http://cmldev.net
sce_vectormathVector math library
ImathImath
Handmade-MathA simple math library for games and computer graphics.
felselva/mathcPure C math library for 2D and 3D programming.
PX4/eigenEigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. http://eigen.tuxfamily.org/
laze-lib/blazeBlaze is an open-source, high-performance C++ math library for dense and sparse arithmetic.
sgorsten/linalglinalg.h is a single header public domain linear algebra library for C++11

Windowing/Inputs

LibTitle
SDLSimple DirectMedia Layer
SFMLSimple and Fast Multimedia Library
glfwA multi-platform library
gainputC++ input library for games
wgois/OISObject oriented Input System https://wgois.github.io/OIS/
ziacko/TinyWindowa cross platform (Linux and Windows) OpenGL window library in a single header
nyorain/nyModern C++ cross-platform window abstraction

Threading

LibTitle
rhoot/scCross platform co-routine library exposed through a minimal C API
deboost.context"Deboostified" version of boost.context (coroutines), Plain and simple C API for context switching. Easy build on multiple platforms.
SergeyMakeev/TaskSchedulerMultithreaded task scheduler experiments
dougbinks/enkiTSC++ and C multithreading task scheduler
Freeeaky/fiber-job-systemMulti-Threaded Job System using Fibers
RichieSams/FiberTaskingLibA library for enabling task-based multi-threading. It allows execution of task graphs with arbitrary dependencies.
JodiTheTigger/sewingSmall C API Multiplatform multithreaded fiber based job system
Pithikos/C-Thread-PoolA minimal but powerful thread pool in ANSI C
mbrossard/threadpoolA simple C Thread pool implementation
tinycthread/tinycthreadSmall, portable implementation of the C11 threads API
yohhoy/threadC11 <threads.h> emulation library

Memory Allocators

LibTitle
mtrebi/memory-allocatorsCustom memory allocators in C++ to improve the performance of dynamic memory allocation
foonathan/memorySTL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write. http://foonathan.net/doc/memory
SergeyMakeev/smmallocBlazing fast memory allocator designed for video games
plasma-umass/MeshA memory allocator that automatically reduces the memory footprint of C/C++ applications.
rampantpixels/rpmallocPublic domain cross platform lock free thread caching 32-byte aligned memory allocator implemented in C
microsoft/mimallocGeneral purpose allocator with excellent performance characteristics.

SIMD

LibTitle
p12tic/libsimdppPortable header-only zero-overhead C++ low level SIMD library
VcDevel/VcSIMD Vector Classes for C++
nemequ/simdeImplementations of SIMD instruction sets for systems which don't natively support them.
xtensor-stack/xsimdC++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, NEON, AVX512)

Debugging

LibTitle
rxi/log.cA simple logging library implemented in C99
spdlogFast C++ logging library.
easy_profilerLightweight profiler library for c++
crosire/blinkA tool which allows you to edit source code of any Windows C++ project live at runtime
ddovod/jet-livec++ hot code reload for linux and macos
RRZE-HPC/likwidPerformance monitoring and benchmarking suite

Plugin System/Reflection

LibTitle
fungos/crcr.h: A Simple C Hot Reload Header-only Library
Manu343726/cttiCompile Time Type Information for C++

Serialization

LibTitle
felixguendling/cistaSimple C++ Serialization & Reflection. https://cista.rocks
msgpack/msgpack-cMessagePack implementation for C and C++
sheredom/json.hjson parser for C and C++

Engine Components

Rendering

LibTitle
bkaradzic/bgfxCross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
floooh/sokolminimal cross-platform standalone C headers
DiligentGraphics/DiligentEngineA modern cross-platform low-level 3D graphics library that supports Direct3D11, Direct3D12, OpenGL/GLES, Vulkan and Metal
Kode/KoreModern low level game library and hardware abstraction
google/filamentFilament is a real-time physically based rendering engine for Android, Windows, Linux and macOS
FNA-XNA/FNA3D3D Graphics Library for FNA
grz0zrg/fbgLightweight C 2D graphics API agnostic library with parallelism support
cofenberg/unrimpUnified renderer implementation ("Un r imp")
doitsujin/dxvkVulkan-based D3D11 and D3D10 implementation for Linux / Wine
pplux/pxSingle header C++ Libraries for Thread Scheduling, Rendering
intel/fastuidrawlibrary that provides a higher performance Canvas interface
V-EZV-EZ is an open source, cross-platform (Windows and Linux) wrapper intended to alleviate the inherent complexity and application responsibility of using the Vulkan API.
ssloy/tinyrendererA brief computer graphics / rendering course
nicebyte/nicegrafAn abstraction layer for low-level platform-specific graphics APIs.
dr-soft/glbindSingle file OpenGL API loader.
dr-soft/vkbindSingle file Vulkan API loader.
LukasBanana/LLGLLow Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal
zauonlok/rendererA shader-based software renderer written from scratch in C89
zeux/niagaraA Vulkan renderer written from scratch on stream

Audio

LibTitle
openal-softsoftware implementation of the OpenAL 3D audio API
FNA-XNA/FAudioFAudio - Accuracy-focused XAudio reimplementation for open platforms
soloudFree, easy, portable audio engine for games
BareRose/atomixPortable, single-file, wait-free atomic sound mixing library utilizing SSE-accelerated mixing
dr-soft/miniaudioSingle file audio playback and capture library
portaudioPortAudio is a free, cross-platform, open-source, audio I/O library
resonance-audioHigh fidelity spatial audio at scale.

Networking

LibTitle
librgPure C99 game networking library
bkaradzic/bnetMessage oriented networking library using TCP transport
zeromq/libzmqZeroMQ core engine in C++, implements ZMTP/3.1 http://www.zeromq.org
rxi/dyadAsynchronous networking for C
lsalzman/enetENet reliable UDP networking library
jarikomppa/ipcPublic domain, cross platform, single header inter-process communication primitives. This is a "stb like" public domain header-only C/C++ library that provides inter process communication functionality, released under unlicense.
ValveSoftware/GameNetworkingSocketsReliable & unreliable messages over UDP. Robust message fragmentation & reassembly. Encryption.
jeremycw/httpserver.hSingle header library for writing non-blocking HTTP servers in C

Scripting

LibTitle
svaarala/duktapeDuktape - embeddable Javascript engine with a focus on portability and compact footprint
GaijinEntertainment/daScriptdaScript - high-performance statically strong typed scripting language https://daScript.org

UI

LibTitle
ocornut/imguiDear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies
vurtun/nuklearA single-header ANSI C gui library
andlabs/libuiSimple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports
rxi/microuiTiny immediate-mode UI library
julianeisel/bWidgetsBasic UI widget toolkit designed for Blender
idea4good/GuiLitesmallest UI framework for all platform & Docker -- 5k lines code
littlevgl/lvglGraphics library to create an embedded GUI with easy-to-use graphical elements
wjakob/nanoguiMinimalistic GUI library for OpenGL
randrew/layoutSingle-file library for calculating 2D UI layouts using stacking boxes. Compiles as C99 or C++.
mikke89/RmlUiC++ user interface package based on the HTML and CSS standards

ECS

LibTitle
skypjack/enttA fast and reliable entity-component system (ECS) and much more
redxdev/ECSC++ single-header entity component system library
alecthomas/entityxEntityX - A fast, type-safe C++ Entity-Component system
discoloda/DianaEntity Component system like Artemis implemented in C
SanderMertens/reflecsMultithreaded entity component system written in C99

Animation / Scenegraph

LibTitle
buserror/libc3Lightweight C Scene Graph Library
guillaumeblanc/ozz-animationOpen source c++ skeletal animation library and toolset
google/motiveA cross-platform, memory efficient, and performant animation system written in C++

Physics

LibTitle
NVIDIAGameWorks/PhysXNVIDIA PhysX SDK 4
bulletphysics/bullet3Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.
chriscamacho/bulletCapiC API for Bullet Physics
MADEAPPS/newton-dynamicsNewton Dynamics is an integrated solution for real time simulation of physics environments. http://www.newtondynamics.com
erincatto/Box2DBox2D is a 2D physics engine for games http://box2d.org
Chipmunk2DA fast and lightweight 2D game physics library.
gjk.cGilbert-Johnson-Keerthi (GJK) collision detection algorithm
phyx2D physics engine with SoA/SIMD optimizations
PlayRhoReal-time oriented physics engine and library that's currently best suited for 2D games
PositionBasedDynamicsPositionBasedDynamics is a library for the physically-based simulation of rigid bodies, deformable solids and fluids
nudgeA small data-oriented and SIMD-optimized 3D rigid body physics library.
ParticleSolverCPU and GPU implementations of a particle-based physics

Pathfinding

LibTitle
jpsJump Point Search, public domain, single .h (Super fast pathfinding on uniform grids)
astar-algorithm-cppImplementations of the A* algorithm in C++ and C#
MicroPatherA* solver (astar or a-star) written in platform independent C++
recastnavigationNavigation-mesh Toolset for Games

Database

LibTitle
symisc/unqliteAn Embedded NoSQL, Transactional Database Engine
fnc12/sqlite_ormSQLite ORM light header only library for modern C++

Asset Management

Meshes/Geometry

Processing

LibTitle
libiglSimple C++ geometry processing library
MathGeoLiblibrary for linear algebra and geometry manipulation for computer graphics
ssecullingSSE Frustum Culling Demo
Cullminator9000The fastest culler ever
SeamAwareDecimaterMesh simplification with UV's boundary preserved
zeux/meshoptimizerMesh optimization library that makes indexed meshes more GPU-friendly
google/dracoDraco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.

Importers/Exporters

LibTitle
assimpOfficial Open Asset Import Library Repository. Loads 40+ 3D file formats into one unified and clean data structure
nem0/OpenFBXLightweight open source FBX importer
syoyo/tinyobjloaderTiny but powerful single file wavefront obj loader
syoyo/tinygltfHeader only C++ Tiny glTF 2.0 loader.
jkuhlmann/cgltfSingle-file glTF 2.0 parser written in C99
microsoft/glTF-SDKglTF-SDK is a C++ Software Development Kit for glTF
facebookincubator/FBX2glTFA command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.

Texture Baking/Packing

LibTitle
BinomialLLC/basis_universalBasis Universal GPU Texture Codec
caosdoar/FornosGPU Texture Baking Tool. A fast and simple tool to bake your high-poly mesh details to textures.
kmkolasinski/AwesomeBumpAwesomeBump generate normal, height, specular or ambient occlusion textures from a single image
dariomanesku/cmftCross-platform open-source command-line cubemap filtering tool
Cheetah-Texture-PackerHigh efficient and fast 2D bin packing tool
thekla_atlasAtlas Generation Tool
libvipsA fast image processing library with low memory needs

Frameworks

LibTitle
GameFoundry/bsfModern C++14 library for the development of real-time graphical applications https://www.bsframework.io
raylibA simple and easy-to-use library to enjoy videogames programming http://www.raylib.com
floooh/oryolA small, portable and extensible C++ 3D coding framework
ConfettiFX/The-ForgeThe Forge Cross-Platform Rendering Framework PC, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4
mosra/magnumLightweight and modular C++11/C++14 graphics middleware for games and data visualization