Changelog

See also:

Changes since 2018.10

New features

Animation library

Math library

Bug fixes

Documentation

2018.10

Released 2018-10-23, tagged as v2018.10.

New features

Animation library

DebugTools library

GL library

Math library

Platform libraries

Primitives library

SceneGraph library

Shaders library

Trade library

Vk library

Changes and improvements

Audio library

GL library

Math library

MeshTools library

Platform libraries

Shaders library

TextureTools library

  • Fixed TextureTools::distanceField() to not require more than 8 texture units, which is the limit on all iOS ES2 contexts, independently on the device (ES3 contexts have 16).

Trade library

Build system

  • There's now a PPA for Ubuntu packages. See Packages for Debian, Ubuntu and derivatives for more information. See also mosra/magnum#248 and mosra/magnum#249.
  • Fixed various issues preventing to build and use the base libraries with OpenGL support disabled (see mosra/magnum#255)
  • Magnum now links to GLVND on Linux instead of the old libGL ABI if using CMake 3.11 and newer
  • Using official Apple OpenGL include paths on iOS (see mosra/magnum#253)
  • FindMagnum.cmake now allows to use the DebugTools library even if some of its optional dependencies are not compiled in
  • FindSDL2.cmake now properly links to dl and pthread libraries when using a static build of SDL2 on Linux
  • FindSDL2.cmake is now able to properly find a debug build of SDL, which enables Vcpkg to properly copy all dependency DLLs on Windows (see mosra/magnum-examples#42, mosra/magnum-examples#45)
  • FindGLFW.cmake is now preferring GLFW CMake config file to pick up the imported target, if available (see mosra/magnum#194)
  • FindMagnum.cmake now provides full paths to application JS/CSS files on Emscripten builds through new MAGNUM_EMSCRIPTENAPPLICATION_JS, MAGNUM_WINDOWLESSEMSCRIPTENAPPLICATION_JS and MAGNUM_WEBAPPLICATION_CSS CMake variables. These files are now installed unconditionally even if no Platform::*Application library is built to allow them to be used with third-party application implementations.
  • ObjImporter didn't work with CMake subprojects due to an embarrassing typo (see mosra/magnum#259)
  • AnyAudioImporter, AnyImageConverter, AnyImageImporter and AnySceneImporter plugins were not correctly updated for subproject support after moving them out of the magnum-plugins repository
  • Improved out-of-the-box behavior with Emscripten toolchains (see mosra/magnum#283)

Bug fixes

Documentation

Deprecated APIs

Potential compatibility breakages, removed APIs

2018.04

Released 2018-05-01, tagged as v2018.04.

Dependency changes

  • Building for Android now requires CMake 3.7 with builtin Android crosscompilation support, the old toolchains were removed. Only the Clang and libc++ toolchain is now supported, support for GCC and libstdc++ was dropped, as it was still missing some important C++11 functionality. See Crosscompiling for Android for more information.

New features

Math library

GL library

Platform libraries

Primitives library

Trade library

Changes and improvements

  • The CompressedPixelStorage class and related APIs are now available on all targets including OpenGL ES and WebGL, however at the moment, until a compatibility code path is implemented, the GL library expects that all parameters are at their defaults.

DebugTools library

GL library

Text library

Platform libraries

Plugins

Build system

Bug fixes

  • Engine startup info was not properly printed to Android log since introducing the --magnum-log option in version 2018.02
  • Dropped Google Closure Compiler from Emscripten toolchains, it was bringing more harm than good (see mosra/magnum#211)
  • Working around Emscripten issue where -s USE_PTHREADS=1 would cause all shader sources containing Unicode characters to be truncated to empty strings. See the "emscripten-pthreads-broken-unicode-shader-sources" workaround description and mosra/magnum#239 for details.
  • GL::Attribute::DataType::HalfFloat was not available on WebGL 2 by mistake
  • A wrong code path for GL::Framebuffer::checkStatus() was selected on WebGL 1 by mistake
  • Fixed MAGNUM_PLUGINS_DIR variables to contain proper absolute location by default again.

Deprecated APIs

Potential compatibility breakages, removed APIs

Documentation

  • A new Developers guide page containing step-by-step checklists for maintainers and core developers
  • A new set of platform-specific guides containing extended information that was previously scattered across Platform application class docs and elsewhere
  • Completely reworked Android building documentation, now using Gradle CMake integration instead of the outdated and no longer supported Apache Ant workflow.
  • The Primitives namespace now has contains images visualizing how each primitive looks
  • Compiling majority of code snippets to ensure they don't get out of sync with the code

2018.02

Released 2018-02-15, tagged as v2018.02. See the release announcement for a high-level overview.

Dependency changes

New features

Audio library

DebugTools library

Math library

Platform libraries

Primitives library

Shaders library

  • Ability to construct all Shaders classes without an OpenGL context present using NoCreate

Text library

Trade library

Changes and improvements

Math library

Platform library

Shaders library

Build system

  • Continuous testing for Linux, macOS, Windows MSVC, Windows MinGW, Windows RT, iOS, Android and Emscripten on Travis CI and AppVeyor CI, with code coverage on codecov.io; replacing the unmaintained and outdated Jenkins configuration (see mosra/magnum#99, mosra/magnum#120, mosra/magnum#142, mosra/magnum#203)
  • Support for CMake subprojects. You can now clone Magnum into a subdirectory in your project and add it using add_subdirectory(). The find_package() command will then use the CMake subproject instead of looking for it in system-wide locations. See mosra/magnum#49. mosra/magnum#140.
  • Reworked CMake buildsystem to use the new imported target workflow, see Usage with CMake for more information (see mosra/magnum#103)
  • CMake targets are now organized in folders for better development experience in IDEs such as Visual Studio or Xcode
  • Added Homebrew package
  • Improvements and dependency updates to the Debian package (see mosra/magnum#119)
  • Ability to build OpenGL tests also on Windows and macOS (see BUILD_GL_TESTS CMake option)
  • Ability to override the implicit plugin directory using a MAGNUM_PLUGINS_DIR CMake cache variable
  • Ability to override deploy directory (used for example by Emscripten) using a MAGNUM_DEPLOY_PREFIX CMake cache variable
  • Better handling of compiled-in resources in static build. You don't need to manually register resources when using Shaders library in static builds (see mosra/magnum-examples#9)
  • MACOSX_RPATH is now enabled by default on CMake 3.0+ (see mosra/magnum#126
  • Enabling only C++ in CMake project() call, if possible, to speed up initial CMake run
  • Windowless application libraries now make use of the BUILD_STATIC_PIC CMake option
  • Fixed FindSDL2.cmake module to work out-of-the-box on Windows and macOS (see mosra/magnum#166)
  • Fixed FindSDL2.cmake to link to EGL when targeting GLES (see mosra/magnum-examples#9)
  • Bundling a patched version of FindOpenAL.cmake to make it working on Emscripten

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

Performance improvements

  • Reduced size of and number of allocations in Mesh class.

Documentation

Changelogs for previous versions are available in Archived changelogs.