A Collection of C/C++ libraries for game development
| Lib | Title |
|---|---|
| bkaradzic/bx | Base library |
| septag/sx | Portable base library for C programmers, tailored for performance and simplicity |
| nothings/stb | stb single-file public domain libraries for C/C++ |
| RandyGaul/cute_headers | One-file C/C++ libraries with no dependencies, primarily used for games |
| vurtun/mmx | single header libraries for C/C++ |
| zpl-c/zpl | Your C99 Powerkit |
| niklas-ourmachinery/bitsquid-foundation | A 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. |
| Lib | Title |
|---|---|
| Hypatia | Pure C math library 2D/3D graphics. Seeks to be close to C89/C90 compliant for portability. |
| g-truc/glm | OpenGL Mathematics (GLM) |
| recp/cglm | Optimized OpenGL/Graphics Math (glm) for C |
| google/mathfu | C++ math library developed primarily for games focused on simplicity and efficiency. |
| ferreiradaselva/mathc | Pure C math library for 2D and 3D programming |
| demianmnave/CML | The Configurable Math Library http://cmldev.net |
| sce_vectormath | Vector math library |
| Imath | Imath |
| Handmade-Math | A simple math library for games and computer graphics. |
| felselva/mathc | Pure C math library for 2D and 3D programming. |
| PX4/eigen | Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. http://eigen.tuxfamily.org/ |
| laze-lib/blaze | Blaze is an open-source, high-performance C++ math library for dense and sparse arithmetic. |
| sgorsten/linalg | linalg.h is a single header public domain linear algebra library for C++11 |
| Lib | Title |
|---|---|
| SDL | Simple DirectMedia Layer |
| SFML | Simple and Fast Multimedia Library |
| glfw | A multi-platform library |
| gainput | C++ input library for games |
| wgois/OIS | Object oriented Input System https://wgois.github.io/OIS/ |
| ziacko/TinyWindow | a cross platform (Linux and Windows) OpenGL window library in a single header |
| nyorain/ny | Modern C++ cross-platform window abstraction |
| Lib | Title |
|---|---|
| rhoot/sc | Cross 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/TaskScheduler | Multithreaded task scheduler experiments |
| dougbinks/enkiTS | C++ and C multithreading task scheduler |
| Freeeaky/fiber-job-system | Multi-Threaded Job System using Fibers |
| RichieSams/FiberTaskingLib | A library for enabling task-based multi-threading. It allows execution of task graphs with arbitrary dependencies. |
| JodiTheTigger/sewing | Small C API Multiplatform multithreaded fiber based job system |
| Pithikos/C-Thread-Pool | A minimal but powerful thread pool in ANSI C |
| mbrossard/threadpool | A simple C Thread pool implementation |
| tinycthread/tinycthread | Small, portable implementation of the C11 threads API |
| yohhoy/thread | C11 <threads.h> emulation library |
| Lib | Title |
|---|---|
| mtrebi/memory-allocators | Custom memory allocators in C++ to improve the performance of dynamic memory allocation |
| foonathan/memory | STL 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/smmalloc | Blazing fast memory allocator designed for video games |
| plasma-umass/Mesh | A memory allocator that automatically reduces the memory footprint of C/C++ applications. |
| rampantpixels/rpmalloc | Public domain cross platform lock free thread caching 32-byte aligned memory allocator implemented in C |
| microsoft/mimalloc | General purpose allocator with excellent performance characteristics. |
| Lib | Title |
|---|---|
| p12tic/libsimdpp | Portable header-only zero-overhead C++ low level SIMD library |
| VcDevel/Vc | SIMD Vector Classes for C++ |
| nemequ/simde | Implementations of SIMD instruction sets for systems which don't natively support them. |
| xtensor-stack/xsimd | C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, NEON, AVX512) |
| Lib | Title |
|---|---|
| rxi/log.c | A simple logging library implemented in C99 |
| spdlog | Fast C++ logging library. |
| easy_profiler | Lightweight profiler library for c++ |
| crosire/blink | A tool which allows you to edit source code of any Windows C++ project live at runtime |
| ddovod/jet-live | c++ hot code reload for linux and macos |
| RRZE-HPC/likwid | Performance monitoring and benchmarking suite |
| Lib | Title |
|---|---|
| fungos/cr | cr.h: A Simple C Hot Reload Header-only Library |
| Manu343726/ctti | Compile Time Type Information for C++ |
| Lib | Title |
|---|---|
| felixguendling/cista | Simple C++ Serialization & Reflection. https://cista.rocks |
| msgpack/msgpack-c | MessagePack implementation for C and C++ |
| sheredom/json.h | json parser for C and C++ |
| Lib | Title |
|---|---|
| bkaradzic/bgfx | Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. |
| floooh/sokol | minimal cross-platform standalone C headers |
| DiligentGraphics/DiligentEngine | A modern cross-platform low-level 3D graphics library that supports Direct3D11, Direct3D12, OpenGL/GLES, Vulkan and Metal |
| Kode/Kore | Modern low level game library and hardware abstraction |
| google/filament | Filament is a real-time physically based rendering engine for Android, Windows, Linux and macOS |
| FNA-XNA/FNA3D | 3D Graphics Library for FNA |
| grz0zrg/fbg | Lightweight C 2D graphics API agnostic library with parallelism support |
| cofenberg/unrimp | Unified renderer implementation ("Un r imp") |
| doitsujin/dxvk | Vulkan-based D3D11 and D3D10 implementation for Linux / Wine |
| pplux/px | Single header C++ Libraries for Thread Scheduling, Rendering |
| intel/fastuidraw | library that provides a higher performance Canvas interface |
| V-EZ | V-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/tinyrenderer | A brief computer graphics / rendering course |
| nicebyte/nicegraf | An abstraction layer for low-level platform-specific graphics APIs. |
| dr-soft/glbind | Single file OpenGL API loader. |
| dr-soft/vkbind | Single file Vulkan API loader. |
| LukasBanana/LLGL | Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal |
| zauonlok/renderer | A shader-based software renderer written from scratch in C89 |
| zeux/niagara | A Vulkan renderer written from scratch on stream |
| Lib | Title |
|---|---|
| openal-soft | software implementation of the OpenAL 3D audio API |
| FNA-XNA/FAudio | FAudio - Accuracy-focused XAudio reimplementation for open platforms |
| soloud | Free, easy, portable audio engine for games |
| BareRose/atomix | Portable, single-file, wait-free atomic sound mixing library utilizing SSE-accelerated mixing |
| dr-soft/miniaudio | Single file audio playback and capture library |
| portaudio | PortAudio is a free, cross-platform, open-source, audio I/O library |
| resonance-audio | High fidelity spatial audio at scale. |
| Lib | Title |
|---|---|
| librg | Pure C99 game networking library |
| bkaradzic/bnet | Message oriented networking library using TCP transport |
| zeromq/libzmq | ZeroMQ core engine in C++, implements ZMTP/3.1 http://www.zeromq.org |
| rxi/dyad | Asynchronous networking for C |
| lsalzman/enet | ENet reliable UDP networking library |
| jarikomppa/ipc | Public 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/GameNetworkingSockets | Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. Encryption. |
| jeremycw/httpserver.h | Single header library for writing non-blocking HTTP servers in C |
| Lib | Title |
|---|---|
| svaarala/duktape | Duktape - embeddable Javascript engine with a focus on portability and compact footprint |
| GaijinEntertainment/daScript | daScript - high-performance statically strong typed scripting language https://daScript.org |
| Lib | Title |
|---|---|
| ocornut/imgui | Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies |
| vurtun/nuklear | A single-header ANSI C gui library |
| andlabs/libui | Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports |
| rxi/microui | Tiny immediate-mode UI library |
| julianeisel/bWidgets | Basic UI widget toolkit designed for Blender |
| idea4good/GuiLite | smallest UI framework for all platform & Docker -- 5k lines code |
| littlevgl/lvgl | Graphics library to create an embedded GUI with easy-to-use graphical elements |
| wjakob/nanogui | Minimalistic GUI library for OpenGL |
| randrew/layout | Single-file library for calculating 2D UI layouts using stacking boxes. Compiles as C99 or C++. |
| mikke89/RmlUi | C++ user interface package based on the HTML and CSS standards |
| Lib | Title |
|---|---|
| skypjack/entt | A fast and reliable entity-component system (ECS) and much more |
| redxdev/ECS | C++ single-header entity component system library |
| alecthomas/entityx | EntityX - A fast, type-safe C++ Entity-Component system |
| discoloda/Diana | Entity Component system like Artemis implemented in C |
| SanderMertens/reflecs | Multithreaded entity component system written in C99 |
| Lib | Title |
|---|---|
| buserror/libc3 | Lightweight C Scene Graph Library |
| guillaumeblanc/ozz-animation | Open source c++ skeletal animation library and toolset |
| google/motive | A cross-platform, memory efficient, and performant animation system written in C++ |
| Lib | Title |
|---|---|
| NVIDIAGameWorks/PhysX | NVIDIA PhysX SDK 4 |
| bulletphysics/bullet3 | Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc. |
| chriscamacho/bulletCapi | C API for Bullet Physics |
| MADEAPPS/newton-dynamics | Newton Dynamics is an integrated solution for real time simulation of physics environments. http://www.newtondynamics.com |
| erincatto/Box2D | Box2D is a 2D physics engine for games http://box2d.org |
| Chipmunk2D | A fast and lightweight 2D game physics library. |
| gjk.c | Gilbert-Johnson-Keerthi (GJK) collision detection algorithm |
| phyx | 2D physics engine with SoA/SIMD optimizations |
| PlayRho | Real-time oriented physics engine and library that's currently best suited for 2D games |
| PositionBasedDynamics | PositionBasedDynamics is a library for the physically-based simulation of rigid bodies, deformable solids and fluids |
| nudge | A small data-oriented and SIMD-optimized 3D rigid body physics library. |
| ParticleSolver | CPU and GPU implementations of a particle-based physics |
| Lib | Title |
|---|---|
| jps | Jump Point Search, public domain, single .h (Super fast pathfinding on uniform grids) |
| astar-algorithm-cpp | Implementations of the A* algorithm in C++ and C# |
| MicroPather | A* solver (astar or a-star) written in platform independent C++ |
| recastnavigation | Navigation-mesh Toolset for Games |
| Lib | Title |
|---|---|
| symisc/unqlite | An Embedded NoSQL, Transactional Database Engine |
| fnc12/sqlite_orm | SQLite ORM light header only library for modern C++ |
| Lib | Title |
|---|---|
| libigl | Simple C++ geometry processing library |
| MathGeoLib | library for linear algebra and geometry manipulation for computer graphics |
| sseculling | SSE Frustum Culling Demo |
| Cullminator9000 | The fastest culler ever |
| SeamAwareDecimater | Mesh simplification with UV's boundary preserved |
| zeux/meshoptimizer | Mesh optimization library that makes indexed meshes more GPU-friendly |
| google/draco | Draco 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. |
| Lib | Title |
|---|---|
| assimp | Official Open Asset Import Library Repository. Loads 40+ 3D file formats into one unified and clean data structure |
| nem0/OpenFBX | Lightweight open source FBX importer |
| syoyo/tinyobjloader | Tiny but powerful single file wavefront obj loader |
| syoyo/tinygltf | Header only C++ Tiny glTF 2.0 loader. |
| jkuhlmann/cgltf | Single-file glTF 2.0 parser written in C99 |
| microsoft/glTF-SDK | glTF-SDK is a C++ Software Development Kit for glTF |
| facebookincubator/FBX2glTF | A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format. |
| Lib | Title |
|---|---|
| BinomialLLC/basis_universal | Basis Universal GPU Texture Codec |
| caosdoar/Fornos | GPU Texture Baking Tool. A fast and simple tool to bake your high-poly mesh details to textures. |
| kmkolasinski/AwesomeBump | AwesomeBump generate normal, height, specular or ambient occlusion textures from a single image |
| dariomanesku/cmft | Cross-platform open-source command-line cubemap filtering tool |
| Cheetah-Texture-Packer | High efficient and fast 2D bin packing tool |
| thekla_atlas | Atlas Generation Tool |
| libvips | A fast image processing library with low memory needs |
| Lib | Title |
|---|---|
| GameFoundry/bsf | Modern C++14 library for the development of real-time graphical applications https://www.bsframework.io |
| raylib | A simple and easy-to-use library to enjoy videogames programming http://www.raylib.com |
| floooh/oryol | A small, portable and extensible C++ 3D coding framework |
| ConfettiFX/The-Forge | The Forge Cross-Platform Rendering Framework PC, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4 |
| mosra/magnum | Lightweight and modular C++11/C++14 graphics middleware for games and data visualization |