- Notifications
You must be signed in to change notification settings - Fork448
Lightweight and modular C++11 graphics middleware for games and data visualization
License
mosra/magnum
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Magnum —Lightweight and modular C++11 graphics middleware for games and data visualization
Looking for an open-source library that gives you graphics abstraction andplatform independence on major desktop, mobile and web platforms? Do you wantit to have all the convenience utilities around yet stay small, powerful andnot give up on flexibility?Here it is. And it's free to use, even forcommercial purposes.
- Project homepage —https://magnum.graphics/
- Documentation —https://doc.magnum.graphics/
- GitHub project page —https://github.com/mosra/magnum
Among Magnum essentials is a UTF-8-aware OS, filesystem and consoleabstraction, a feature-packed vector math library and a slim C++11 wrapper ofOpenGL / WebGL family of APIs. Build on top of that or opt-in for more.
Shaders and primitives for fast prototyping, algorithms, debugging andautomatic testing, asset management, integration with popular windowingtoolkits and a UI library. Everything fits together but you still have achoice.
There's always more than one way to do things. Enjoy the freedom of choice andintegrate your own asset loader, texture compressor, font format or mathlibrary, if you feel the need. Or use any of the various plugins.
Wondering if Magnum is a good fit for your project? We prepareda few case studiesto help you decide.
- Linux and embedded Linux
- Windows with MSVC, clang-cl and MinGW,Windows RT (Store/Phone)
- macOS,iOS
- Android
- Web (asm.js orWebAssembly),throughEmscripten
Graphics APIs:
- OpenGL 2.1 through 4.6, core profile functionality and modernextensions
- OpenGL ES 2.0, 3.0–3.2 and extensions to match desktop OpenGLfunctionality
- WebGL 1.0, 2.0 and extensions to match desktop OpenGL functionality
See theBuild Status page for detailedper-platform build status.
Curious about what was added or improved recently? Check out theChangelogpage in the documentation.
The best way to get started is to read the thoroughdownload, build, install and start using Magnumin your project. There is also a completebuilding documentation — weprovide packages for many platforms, including Windows, Linux and macOS. Afterthat, there are varioustutorials and examplesand a completefeature guideexplaining all aspects of the library.
Apart from that, various Magnum functionality is available throughsingle-header libraries.Just download a file,#include
it in your project and you're ready to go! Nobuildsystem wrangling needed.
The engine itself is kept as small as possible with only a few dependencies.Additional functionality, often depending on external libraries, is provided inseparate repositories.
- Corrade — main Magnum dependency, a multiplatform utility library:https://github.com/mosra/corrade
- Magnum Bootstrap — bootstrap projects for many use cases, helping youget up and running in no time:https://github.com/mosra/magnum-bootstrap
- Magnum Plugins — various importer plugins for image, font, audio and3D model formats are athttps://github.com/mosra/magnum-plugins
- Magnum Integration — integration with various external math andphysics, get it athttps://github.com/mosra/magnum-integration
- Magnum Examples — examples of engine usage, varying from simpleHello World-like example to more advanced applications, such as viewerfor complex 3D models. See it athttps://github.com/mosra/magnum-examples
- Magnum Extras — playground for testing new APIs, specialized stuffthat doesn't necessarily need to be a part of main Magnum repository ormutually exclusive functionality:https://github.com/mosra/magnum-extras
- Magnum Bindings — bindings to other languages such as Python are athttps://github.com/mosra/magnum-bindings
- Magnum Singles — various functionality from Magnum available aseasy-to-integrate fast-to-compile single-header libraries:https://github.com/mosra/magnum-singles
Outside of the project itself, there's also a lot of community contributions—check them out on the website.
If you want to contribute to Magnum, if you spotted a bug, need a feature orhave an awesome idea, you can get a copy of the sources from GitHub and startright away! There is the already mentioned guide abouthow to download and build Magnumand also a guide aboutcoding style and best practiceswhich you should follow to keep the library as consistent and maintainable aspossible.
- Project homepage —https://magnum.graphics/
- Documentation —https://doc.magnum.graphics/
- GitHub —https://github.com/mosra/magnum and the#magnum topic
- GitLab —https://gitlab.com/mosra/magnum
- Gitter community chat —https://gitter.im/mosra/magnum
- E-mail —info@magnum.graphics
- Google Groups mailing list —magnum-engine@googlegroups.com (archive)
- Bluesky —https://bsky.app/profile/mosra.cz
See also the Magnum ProjectContact & Support pagefor further information.
Detailed contributor listis maintained in the documentation. Big thanks to everyone involved!
There's also a list ofthird party componentsthat affect public use of the project.
Magnum is licensed under the MIT/Expat license, see theCOPYING filefor details.
About
Lightweight and modular C++11 graphics middleware for games and data visualization