The new Magnum milestone brings WebGL 2.0 and WebAssembly, VR
support, lots of niceties for Windows users, iOS port, new experimental UI
library, improved testing capabilities, support for over 80 new asset
formats, new examples and much more.
A new Magnum example implements an analytic method for area light
shading presented in the paper “Real-Time Polygonal-Light Shading with
Linearly Transformed Cosines”, by Eric Heitz, Jonathan Dupuy, Stephen Hill
and David Neubelt.
The Magnum C++11/C++14 and OpenGL graphics engine gained OpenGEX
format support, a bunch of new importer plugins, cross-platform extension
loader, transform feedback support and new features from OpenGL ES 3.1 and
OpenGL 4.5, among other things.
The Magnum C++11 and OpenGL/OpenGL ES/WebGL graphics engine gained
experimental Android support, windowless applications on OS X and Windows,
uses SDL2 as the default toolkit, adds new texture and mesh features,
improves build system and got huge documentation review.
After reading the “How to draw a red square in Qt Quick” blog post
showcasing the simplicity of Qt API I thought it would be interesting to
try something similar in Magnum for comparison.
Since the previous October snapshot Magnum gained Visual Studio port,
font conversion utility, improved text rendering along with example
application, support for OpenGL debug output, documentation updates, better
test coverage and many more usability improvements and fixes.
Large C++ projects often suffer with very long times for both full
and incremental compilation, severely hurting productivity. The following
series will overview some techniques employed in Magnum to make iteration
times smaller, this article focuses on code-based optimizations.
While the previous part was focused on C++11 features improving
performance, here I will describe features which are used just to simplify
your life by writing more concise code with less mistakes.