Bundle
Bundle是一个可以嵌入的压缩库,支持23种压缩算法和2种归档格式。它几乎将所有常见的压缩库都进行了封装,统一了接口,开发者能够调用任意自己想要的压缩库。
特性
Archive支持:.bun, .zip
Stream支持:DEFLATE, LZMA, LZIP, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB, BZIP2和SHOCO
在可能的情况下,优化每个压缩机的最高压缩比。
在可能的情况下,优化每个减压器的最快解压时间。
可配置、可重新分发、自包含、合并和跨平台(c++ 03)。
可选的基准基础设施(c++ 11)。
ZLIB / LibPNG许可。
Fmt
项目地址:GitHub - fmtlib/fmt: A modern formatting library
fmt是一个开源格式库,为C stdio和C++ iostream提供了一个快速安全的替代方案。
Assimp(Open Assert Import Library)
Open Asset Import Library是一个库,用于将各种3d文件格式加载到共享内存格式中。它支持40多种导入文件格式和越来越多的导出文件格式选择。
Assimp为C/C++提供了API,与其它语言(C#、Java、Python、Delphi、D)有各种绑定,也可以在Android和IOS上运行。此外,assimp具有各种网格处理工具:法线和切线空间生成,三角测量,顶点缓存局部性优化,删除退化的图元和重复的顶点,按图元类型排序,合并冗余等等。
Celero
项目地址:GitHub - DigitalInBlue/Celero: C++ Benchmark Authoring Library/Framework
Celero是C++ Benchmarking Library,简单易用。它与Google Test的架构相似,其目的是测量某段代码的性能,消除你以为是正确方案的错误。
Amalgamate
项目地址:GitHub - vinniefalco/Amalgamate: A tool for creating an amalgamation from C and C++ sources
Amalgamate是一个跨平台的命令行工具,用于将C/C++源代码进行合并。比如某个C++库有几十个.h和.cpp文件,就可以使用Amalgamate将这些.h和.cpp文件封装成一个.h和.cpp文件,这两个文件会变得非常大。现在已经有很多人使用它对其它的库进行封装。
Getopt
项目地址:GitHub - r-lyeh-archived/getopt: Simple command-line options handler (C++11)
Getopt是一个简单的命令行选项处理程序(c++ 11)。
Bgfx
Bgfx是一个跨平台、图形API agnostic、“自带引擎/框架”风格的渲染库。
支持的渲染后端:
- Direct3D 11
- Direct3D 12
- GNM (only for licensed PS4 developers, search DevNet forums for source)
- Metal
- OpenGL 2.1
- OpenGL 3.1+
- OpenGL ES 2
- OpenGL ES 3.1
- Vulkan
- WebGL 1.0
- WebGL 2.0
支持的平台:
- Android (14+)
- iOS/iPadOS/tvOS (16.0+)
- Linux
- macOS (13.0+)
- PlayStation 4
- RaspberryPi
- UWP (Universal Windows, Xbox One)
- Wasm/Emscripten
- Windows (7+)
Doctest
项目地址:GitHub - doctest/doctest: The fastest feature-rich C++11/14/17/20/23 single-header testing framework
doctest是一个新的C++测试框架,但是与其他功能丰富的替代方案相比,它在编译时间(数量级)和运行时间上都是最快的。它带来了编译语言(如D / Rust / Nim)的能力,可以直接在产品代码中编写测试,这要归功于一个快速、透明和灵活的测试运行程序,它有一个干净的接口。
Stb_image
项目地址:GitHub - nothings/stb: stb single-file public domain libraries for C/C++
Stb是一个C/C++的单文件公共领域(或MIT许可)库。它的实现全部都在头文件中,每个头文件代表一种功能的实现,在项目中直接引用头文件即可,不需要单独进行编译。
LibBF
项目地址:LibBF Library
LibBF是一个处理任意精度浮点数的小库。它的编译大小约为90 KB的x86代码,并且不依赖于其他库。它不是最快的库,也不是最小的库,但在使用渐近最优算法时,它尽量简单。基本算术运算的运行时间接近线性。
Bullet3
Bullet3是Bullet Physics SDK的官方C++源代码库,主要用于VR、游戏、视觉效果、机器人、机器学习等实时碰撞检测和多物理模拟。
Stb_truetype
Stb_truetype是一个轻量级的字体加载库,整个库只有一个头文件,在功能方面不如freetype强大,但它的代码量比freetype少很多。
Cinder
Cinder是一个peer-reviewed、免费的、用于创造性编码的开源C++库。Cinder支持macOS、Windows、Linux和iOS。在Mac上,它要求使用Xcode 11.3.1或更高版本进行开发,在Windows上使用Visual C++ 2019或更高版本。
Pbrt-v3
Pbrt库保存了pbrt版本的源代码,该版本在马特·法尔、文泽尔·雅各布和格雷格·汉弗莱斯所著的《基于物理的渲染:从理论到实现》第三版中有所描述,和以之前一样,代码在BSD许可下可用。
Better-enums
项目地址:GitHub - aantron/better-enums: C++ compile-time enum to string, iteration, in a single header file
Better-enums是一个C++枚举库,比标准C++枚举更灵活和更强大,它具有清晰的语法和反射编译时枚举库,在单个头文件中,没有依赖项。
在C++ 11中,一切都可以在编译时使用。您可以转换枚举,循环遍历它们,找到它们的最大值,静态执行约定,并将结果作为模板参数或constexpr函数传递。所有的反射都可以满足元编程的需要。
C++ 98的接口也是一样的,你只需要在运行时使用它的大部分。这个库提供了有作用域和大小的枚举,这是C++ 98中没有内置的。
GLM
项目地址:GitHub - g-truc/glm: OpenGL Mathematics (GLM)
GLM是一个基于OpenGL Shading语言(GLSL)规范的图形软件的C++数学库。
GLM提供了用与GLSL相同的命名约定和功能设计和实现的类和函数,这样任何知道GLSL的人都可以在C++中使用GLM。
GLM库并不局限于GLSL的特色,一个基于GLSL扩展惯例的扩展系统,提供了扩展的能力:矩阵变换、四元数、数据打包、随机数、噪声等...
GLM库可以很好地兼容OpenGL,但它也确保了与其他第三方库和SDK的互操作性。它是软件渲染(光线跟踪/光栅化)、图像处理、物理模拟和任何需要简单方便的数学库的开发环境的良好选择。
GLM是用C++98编写,但是当编译器支持时,可以使用C++11。同时,它也是一个独立于平台的库,不依赖于任何第三方库。
Catch2
Catch2是一个C++的单元测试框架,但它也提供了基本的微基准测试特性和简单的BDD宏。
Catch2的主要优点是使用起来既简单又自然。测试名不需要是有效的标识符,断言看起来像普通的C++布尔表达式,提供了一种很好的本地方式来共享测试中的设置和删除代码。
比如,单元测试用例
Rapidjson
项目地址:GitHub - Tencent/rapidjson: A fast JSON parser/generator for C++ with both SAX/DOM style API
Rapidjson是一个用于C++的快速JSON解析器/生成器,具有SAX/DOM风格的API。
Uchardet
项目地址:GitHub - BYVoid/uchardet: An encoding detector library ported from Mozilla
Uchardet是一个编码检测器库,它采用未知字符编码的字节序列,不带任何附加信息,并试图确定文本的编码,返回的编码名称与图标兼容。比如,你输入一个未知编码的文本文件,uchardet能够猜测该文件的编码类型,这与Python中的uchardet库功能类似。
xxHash
项目地址:GitHub - Cyan4973/xxHash: Extremely fast non-cryptographic hash algorithm
xxHash是一种速度极快的哈希算法,在RAM速度限制下进行处理。代码是高度可移植的,并且在所有平台上产生相同的散列(小/大字节序)。
该库包括以下算法:
- XXH32 : generates 32-bit hashes, using 32-bit arithmetic
- XXH64 : generates 64-bit hashes, using 64-bit arithmetic
- XXH3 (since v0.8.0): generates 64 or 128-bit hashes, using vectorized arithmetic. The 128-bit variant is called XXH128.
Docopt
项目地址:GitHub - docopt/docopt.cpp: C++11 port of docopt
Docopt是用于创建漂亮、美观的命令行界面。
Win-iconv
项目地址:GitHub - win-iconv/win-iconv: iconv implementation using Win32 API to convert.
win_iconv是一个使用Win32 API进行转换的iconv实现,通过调用win32 API实现和iconv库一样的接口功能,最终编译出的软件较小。它的主要功能是字符编码转换。
Freetype GL
项目地址:GitHub - rougier/freetype-gl: OpenGL text using one vertex buffer, one texture and FreeType
Freetype GL是一个在OpenGL中使用单个纹理和单个顶点缓冲显示Unicode的小库。
NanoVG
NanoVG是一个小型的OpenGL抗锯齿矢量图形渲染库。它有精简的API,模仿HTML5画布API。它旨在成为一个实用而有趣的工具集,用于构建可扩展的用户界面和可视化。
NanoVG API是基于HTML5 canvas API建模的。如果你了解canvas,你很快就能使用NanoVG。
Swig
SWIG是一个集成了C和C++语言的编译器,包括Perl,Python,Tcl,Ruby,PHP,Java,C#,D,Go,Lua,Octave,R,Scheme (Guile,MzScheme/rack),Scilab,Ocaml。SWIG还可以将其解析树导出为XML。
Imgui
Imgui是一个轻量级的、跨平台的C++图形界面框架库,主要应用在游戏行业,它的所有控件可以直接使用OpenGL/DX实现,但需要手动进行绘制;很受游戏开发者和应用程序开发者的青睐。
与传统Retained mode GUI不同,Imgui使用立即模式构建UI。
Json
项目地址:GitHub - nlohmann/json: JSON for Modern C++
在Python之类的语言中,JSON感觉就像是一级数据类型。Json库使用了现代C++的所有操作符语法,在你的代码中也能够实现同样的风格。
Spdlog
项目地址:GitHub - gabime/spdlog: Fast C++ logging library.
Spdlog是一个高性能logging库,速度快、易用性好,header-only/compiled。
比如:
Pugixml
项目地址:GitHub - zeux/pugixml: Light-weight, simple and fast XML parser for C++ with XPath support
Pugixml是一个C++ xml处理库,它由一个具有丰富遍历/修改功能的类DOM接口、一个从XML文件/缓冲区构建DOM树的速度极快的XML解析器和一个用于复杂数据驱动的树查询的XPath 1.0实现组成。它还提供了完整的Unicode支持,包括Unicode接口变体和不同Unicode编码之间的转换(这在解析/保存期间自动发生)。
由于性能和易于使用的接口,pugixml被许多项目使用,包括开源项目和专有项目。
FFTS
项目地址:GitHub - linkotec/ffts: The Fastest Fourier Transform in the South
FFTS是一个简单、快速、高度优化的傅里叶变换实现,主要提供高性能的离散傅里叶变换功能,它在音频分析、图像处理、信号处理等领域有着重要的作用。
FFTS使用线性时间复杂度算法,将实数序列或线性序列转换到频域和逆向转换,支持单精度浮点类型和双精度浮点类型,在ARM、X86和CUDA GPU平台上进行了优化。
FFTS使用分治策略的方式将大问题拆解成小的子问题,在将这些子问题进行递归,并返回最终结果。
Recastnavigation
项目地址:GitHub - recastnavigation/recastnavigation: Industry-standard navigation-mesh toolset for games
Recastnavigation为Unity,Unreal,Godot,O3DE和无数AAA和独立游戏和引擎中的AI导航功能提供了动力。
Microprofile
项目地址:GitHub - jonasmr/microprofile: microprofile is an embeddable profiler
Microprofile是一个嵌入在一些文件中的分析器,使用用C++编写。