All Projects → mosra → magnum-singles

mosra / magnum-singles

Licence: other
Single-header libraries from the Magnum engine

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to magnum-singles

magnum-extras
Extras for the Magnum C++11/C++14 graphics engine
Stars: ✭ 26 (-72.92%)
Mutual labels:  graphics-engine, magnum
magnum-integration
Integration libraries for the Magnum C++11/C++14 graphics engine
Stars: ✭ 75 (-21.87%)
Mutual labels:  graphics-engine, magnum
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+3783.33%)
Mutual labels:  graphics-engine, magnum
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+2131.25%)
Mutual labels:  graphics-engine
Mos
Lightweight game engine.
Stars: ✭ 153 (+59.38%)
Mutual labels:  graphics-engine
Lift
Vulkan Path Tracer with Optix Denoiser integration
Stars: ✭ 30 (-68.75%)
Mutual labels:  graphics-engine
robot dart
Generic wrapper around the DART simulator
Stars: ✭ 31 (-67.71%)
Mutual labels:  magnum
Graphicalgorithm
🐙 🐙图形学论文实现
Stars: ✭ 108 (+12.5%)
Mutual labels:  graphics-engine
kinieta
A Fast Animation Engine with an Intuitive API
Stars: ✭ 44 (-54.17%)
Mutual labels:  graphics-engine
OpenGL-3D-Game-Tutorial-Series
C++ OpenGL 3D Game Tutorial Series - Learn to code a Cross-Platform OpenGL 3D Game in C++ from scratch
Stars: ✭ 132 (+37.5%)
Mutual labels:  graphics-engine
CenoGL
a 3D graphics engine without graphics libs
Stars: ✭ 14 (-85.42%)
Mutual labels:  graphics-engine
Magnum Examples
Examples for the Magnum C++11/C++14 graphics engine
Stars: ✭ 180 (+87.5%)
Mutual labels:  graphics-engine
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (+27.08%)
Mutual labels:  graphics-engine
Adria-DX11
Graphics engine written in C++ using DirectX11
Stars: ✭ 87 (-9.37%)
Mutual labels:  graphics-engine
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (+43.75%)
Mutual labels:  graphics-engine
magnum-vr-ui
Magnum::Ui + Leap Motion + Oculus VR
Stars: ✭ 21 (-78.12%)
Mutual labels:  magnum
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (+34.38%)
Mutual labels:  graphics-engine
Arcane Engine
3D C/C++ Game Engine - Created By Brady Jessup
Stars: ✭ 242 (+152.08%)
Mutual labels:  graphics-engine
TermGL
2D & 3D graphics engine in the terminal [C/C++]
Stars: ✭ 219 (+128.13%)
Mutual labels:  graphics-engine
GITechDemo
Global illumination technical demo - a continuation of the Synesthesia3D (ex-LibRenderer) graphics engine used in https://github.com/iftodebogdan/ShaderEditor
Stars: ✭ 45 (-53.12%)
Mutual labels:  graphics-engine

This repository contains single-header libraries from the Magnum engine.

Join the chat at https://gitter.im/mosra/magnum Build Status MIT License

LIBRARIES

There are the following single-header libraries at the moment. This list will grow with more Magnum features being exposed this way.

Library LoC PpLoC[1] Description
CorradeArrayView.h 705 2628 Containers::ArrayView and Containers::StaticArrayView, lightweight alternatives to std::span
CorradeStridedArrayView.h 911[2] 3245 Containers::StridedArrayView, multi-dimensional strided array view. Depends on CorradeArrayView.h.
CorradeArray.h 754[2] 3208 Containers::Array and Containers::StaticArray, lightweight alternatives to std::vector and std::array. Depends on CorradeArrayView.h.
CorradeOptional.h 358 2554 Containers::Optional, a lightweight alternative to std::optional
CorradePointer.h 273 2437 Containers::Pointer, a lightweight alternative to std::unique_ptr
CorradeReference.h 115 1739 Containers::Reference, a lightweight alternative to std::reference_wrapper
CorradeScopeGuard.h 131 34 Containers::ScopeGuard, a lightweight alternative to std::unique_ptr with a custom deleter
CorradeCpu.h 1652 2088 Cpu library, compile-time and runtime CPU feature detection and dispatch
CorradeStlForwardArray.h 67 2318[3] Corrade's forward declaration for std::array, a lightweight alternative to the full <array> (15k PpLOC[1]) where supported
CorradeStlForwardString.h 74 50 Corrade's forward declaration for std::string, a lightweight alternative to the full <string> (11k PpLOC[1]) where supported
CorradeStlForwardTuple.h 78 1714 Corrade's forward declaration for std::tuple, a lightweight alternative to the full <tuple> (13k PpLOC[1]) where supported
CorradeStlForwardVector.h 62 859[3] Corrade's forward declaration for std::vector, a lightweight alternative to the full <vector> (9k PpLOC[1]) where supported
CorradeStlMath.h 57 3164[4] Corrade's optimized <cmath>, without the heavy C++17 additions (which is otherwise 11k PpLOC[4])
MagnumMath.hpp 7748 10066 Math namespace, a full-featured graphics-oriented linear algebra library

[1] — lines of code after a preprocessor run, with system includes expanded. Gathered using GCC 11.2 and libstdc++, unless said otherwise.

[2] — not a total size due to inter-library dependencies

[3] — gathered using Clang 13.0 and libc++, since libstdc++ doesn't have a forward declaration for std::array / std::vector

[4] — gathered using GCC 11.2, libstdc++ and -std=c++17

Where is the documentation?

Single-header libraries provided here are generated from multi-file sources in the Magnum project. This is done for two reasons — first, documentation and test coverage is much easier to maintain in the setting of a bigger project, avoiding any redundancy or duplicated efforts. Second, because the resulting files are generated with non-essential parts stripped away, there's no need to worry about bloating them due to original implementations having extensive documentation or rarely used features.

With the goal being easy integration, the files are deliberately free of all comments and documentation blocks to keep their size small. Documentation for each library is provided in the official Magnum documentation, linked from the table above. Each library file contains the same documentation link, together with a concrete Git revision it was generated from a changelog for a few versions back for easier overview when updating.

For more information read the single-header library docs. The libraries are generated using acme.py, which is a part of Corrade. See its documentation, if you are interested. Particular libraries are introduced on the Magnum blog:

What about test coverage?

Testing done in this repository is mainly to ensure the libraries are generated correctly. Extensive testing on variety of compilers and OSes with > 99% test coverage is done in the Magnum Project itself. See the Build Status page for more information.

Reporting bugs and contributing

As always, bug reports, feature requests and code contributions are very welcome. However again please note the files in this repository are generated from original sources in the corrade and magnum repositories, meaning that ideally all PRs should go there instead, as there's a better infrastructure for documentation and testing. We don't enforce this rule though — if you have an important bugfix, it's better if you submit it here than not at all 😉

SUPPORTED PLATFORMS

All libraries are tested on these platforms:

And on these compilers:

  • GCC 4.8.1 and newer (and equivalent MinGW-w64 version)
  • Clang 6.0 and newer (or AppleClang 10.0 and newer), both libstdc++ and libc++
  • MSVC 2015 and newer

CONTACT & SUPPORT

See also the Magnum Project Contact & Support page for further information.

Credits

Libraries presented here are a result of a dedicated work by many community members. List of all contributors to the Magnum Project can be found in the documentation.

License

Magnum is licensed under the MIT/Expat license, see the COPYING file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].