The new release brings Python bindings, Basis Universal texture
compression, improved STL interoperability, better Unicode experience for
Windows users, a more efficient Emscripten application implementation,
single-header libraries, new OpenGL driver workarounds and much more.
During the past four months, Magnum began its adventure into the
Python world. Not just with some autogenerated bindings and not just with
some autogenerated Sphinx docs — that simply wouldn’t be Magnum enough.
Brace yourselves, this article will show you everything.
Magnum is developed with a “Zen Garden” philosophy
in mind, focusing on productivity, predictability and ease of use. Let’s
see how can that extend beyond just the library itself — into your daily
Magnum recently gained a new data structure usable for easy data
description, transformation and inspection, opening lots of new
possibilities for more efficient workflows with pixel, vertex and animation
Some time ago, when looking into different ways how to reduce STL
header bloat, I discovered that libc++’s <iosfwd> has a forward
declaration for std::vector. Turns out, there are more of them —
and not just on one particular standard library implementation.
Last year, Magnum was used to introduce students to virtual reality
programming at the Ludwig-Maximilians-Universität München — powering a
environment, a room-scale five-sided projection installation.
Engines supporting more than one graphics backend very often need to
translate various enum values — pixel formats, primitive types etc. —
from a generic API-agnostic value to the one used by a particular
implementation, in the fastest-possible and most robust way.
Similarly to the pointer and reference wrappers
described in the last article,
Magnum’s array views recently received STL compatibility as well. Let’s
take that as an opportunity to compare them with the standard
implementation in std::span.
The new version puts a focus on usability with tweakable constants
for live coding, Dear ImGui integration, new packages, Gradle-less Android
development, compile time speedup and other general polishing.