Archived changelogs

See also:

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 Cross-compiling 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

  • The GL::Mesh::indexTypeSize() and GL::MeshView::setIndexRange() now expect that the mesh is indexed (instead of silently not doing anything)

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

  • Functionality that is not available on WebGL (like debug output etc.) is not present in WebGL builds to reduce compiled code size
  • The Mesh class now stores a copy of Buffer instance instead of reference, meaning that you can move your buffers freely after assigning them to a mesh
  • *Texture::setStorage() fallback implementation on OpenGL ES 2.0 and WebGL 1.0 now properly translates sized texture formats to what the drivers expect (see mosra/magnum#214)
  • TgaImporter and TgaImageConverter now consistently use RGB(A) on all platforms and don't require BGR(A) on desktop
  • Ignoring "No errors." message produced by GLSL compiler/linker on Intel Windows drivers.
  • *Texture::image() and *Framebuffer::read() now reallocate image data only if needed, for both Image and BufferImage types
  • R-value Image* no longer restricts conversion to ImageView as it is a valid use case (for example passing output from Framebuffer::read() directly to Trade::AbstractImageConverter::exportToFile())
  • It's no longer possible to call Image*::data() on r-value instances as that would cause accessing freed data. Use Image::release() instead.
  • Buffer::map() now returns Corrade::Containers::ArrayView instead of a plain pointer for better security
  • Improved Context::resetState() to better handle corner cases with VAOs
  • Graceful handling of broken GL contexts
  • Behavior of Version::GLES200 and upwards on desktop OpenGL is changed to request an ES dialect of GLSL when used in Shader (instead of a particular desktop GL version that supports given ES version), looks for ARB_ES2_compatibility and others (instead of checking for a particular desktop GL version that supports given ES version)
  • Binding some default VAO in case the engine is running on core profile with ARB_vertex_array_object disabled
  • It's now possible to create ImageView with nullptr data (for example for old-style texture allocation using Texture::setImage())
  • Various workarounds to make the engine working better on SVGA3D drivers (VMWare guest)
  • Various updates and code modernization (see mosra/magnum#200)

Math library

Platform library

Shaders library

  • Shaders::Flat now sets default color to white only in textured version
  • Shaders::Phong gained the ability to have both color and texture
  • Shaders::Phong is now able to do alpha-masking (see mosra/magnum#112, mosra/magnum-examples#29)

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
  • Fixed EMSCRIPTEN environment variable handling in Emscripten toolchains (see mosra/toolchains#2, mosra/toolchains#3)

Bug fixes

Deprecated APIs

Potential compatibility breakages, removed APIs

  • The Math::Geometry::Distance and Math::Geometry::Intersection classes are now a namespace (might break using declarations, but otherwise it's fully source-compatible)
  • Removed Context::majorVersion() and Context::minorVersion() functions, use Context::version() instead
  • Removed deprecated Magnum/DebugMarker.h header, use Magnum/DebugOutput.h and DebugMessage class instead
  • Removed deprecated *Buffer values from FramebufferBlit, use values without the Buffer suffix
  • Removed deprecated list-argument functions taking pointers from Audio and SceneGraph libraries, use lists of references instead
  • Removed deprecated texture unit enums from Shaders library, use dedicated texture setters instead
  • Removed deprecated *TexturemaxLayers() functions, use Shader::maxCombinedTextureImageUnits() instead
  • Removed deprecated MeshTools::combineIndexedArrays(), MeshTools::compressIndices(), MeshTools::interleave() and MeshTools::removeDuplicates() overloads, use the general ones instead
  • Removed deprecated Mesh*set*{Range,Count}() functions, use Mesh*::setCount() and MeshView::setIndexRange() instead
  • Removed deprecated parameterless GL::Mesh::draw() overload, use the one with explicit shader parameter instead
  • Removed deprecated Context::Flag::Robustness enum value, use Context::Flag::RobustAccess instead
  • Removed deprecated Texture::Target enum, use dedicated Texture, TextureArray, RectangleTexture and MultisampleTexture classes instead
  • Removed deprecated Resource conversion operator, use explicit conversion instead
  • Removed deprecated Framebuffer::attachTexture*D() overloads, use one of Framebuffer::attachTexture() or Framebuffer::attachTextureLayer() overloads instead.
  • Removed SceneGraph::Camera3D::near() and SceneGraph::Camera3D::far() getters, because they can't be provided anymore with current more general implementation. THe user is advised to cache the values on application side if they are really needed.
  • Removed AbstractImage class and Magnum/AbstractImage.h header, its functionality is present in the Image* classes directly
  • Removed Image::dataSize() function as it has ambiguous meaning in regards to recently added features, use Image::dataProperties() instead
  • The FindGLFW.cmake now prefers absolute includes (i.e. GLFW/glfw3.h instead of just glfw3.h). The Platform::GlfwApplication now depends on this, so be sure to update your copy to avoid build issues.

Performance improvements

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

Documentation

2015.05

Released 2015-05-09, tagged as v2015.05. See the release announcement for a high-level overview.

New features

Changes

Build system

  • CMake now always installs FindMagnum.cmake to library-specific location, making it usable without providing own copy of the file in depending projects. The WITH_FIND_MODULE option is no longer needed.
  • CMake now handles inter-library dependencies automatically without manually specifying each and every one (see mosra/magnum#73).
  • Ability to control static build of plugins separately using BUILD_PLUGINS_STATIC.
  • Displaying all header files, plugin metadata files and resource files in project view to make use of some IDEs less painful (such as QtCreator).
  • Gentoo ebuild (see mosra/magnum#69, mosra/magnum#83).

Bug fixes

Deprecated APIs

  • The Magnum/Query.h header is deprecated, use one of Magnum/PrimitiveQuery.h, Magnum/SampleQuery.h or Magnum/TimeQuery.h instead.
  • Using Buffer::Target as constructor or Buffer::setTargetHint() parameter is deprecated, use Buffer::TargetHint instead.
  • The SceneGraph::TransformationType enum is depracted, use separate <transform>() and <transform>Local() variants instead.
  • SceneGraph::AbstractObject::hasFeatures(), firstFeature(), lastFeature(), SceneGraph::Object::hasChildren(), firstChild() and lastChild() are deprecated, use methods on linked list returned by SceneGraph::AbstractObject::features() and SceneGraph::Object::children() instead.
  • Platform::ScreenedApplication::frontScreen() and Platform::ScreenedApplication::backScreen() are deprecated, use methods on linked list returned by Platform::ScreenedApplication::screens() instead.
  • *Framebuffer::read() functions taking two vectors are deprecated, use overload taking Range2Di instead.
  • The Mesh::maxVertexAttributes() function is deprecated, use AbstractShaderProgram::maxVertexAttributes() instead.
  • Math::Vector::dot(), Math::Complex::dot(), Math::Quaternion::dot(), Math::Vector::angle(), Math::Complex::angle(), Math::Quaternion::angle(), Math::Quaternion::lerp(), Math::Quaternion::slerp(), Math::Vector2::cross() and Math::Vector3::cross() are deprecated, use Math::dot(), Math::angle(), Math::lerp(), Math::slerp() and Math::cross() instead (see mosra/magnum#74)
  • The *Framebuffer::bind(FramebufferTarget) function is deprecated, use parameter-less *Framebuffer::bind() instead.
  • The FramebufferTarget::ReadDraw enum value is deprecated, use separate FramebufferTarget::Read and FramebufferTarget::Draw values instead.
  • CubeMapTexture::imageSize() with explicit face parameter is deprecated, use overload that returns one value for all faces instead.
  • The Magnum/DebugMessage.h header is deprecated, use Magnum/DebugOutput.h instead (see mosra/magnum#89)
  • The DebugMessage::Severity enum is deprecated, use DebugOutput::Severity instead.
  • The DebugMessage::Callback typedef, DebugMessage::setCallback() and DebugMessage::setDefaultCallback() function is deprecated, use DebugOutput::Callback, DebugOutput::setCallback() and DebugOutput::setDefaultCallback() instead.
  • The DebugMessage::maxLoggedMessages() and DebugMessage::maxMessageLength() functions are deprecated, use DebugOutput::maxLoggedMessages() and DebugOutput::maxMessageLength() instead.
  • The DebugMessage::setEnabled() function and related values from DebugMessage::Source enum are deprecated, use DebugOutput::setEnabled() along with DebugOutput::Source, DebugOutput::Type and DebugOutput::Severity instead.
  • Parameter-less *Query constructor and parametrized *Query::begin() function are deprecated, use constructor with parameter and parameter-less *Query::begin() instead.

Potential compatibility breakages, removed APIs

  • All functionality deprecated in 2014.01 has been removed, namely:
    • Removed deprecated ability to use relative includes (e.g. #include <Mesh.h>), use absolute paths (#include <Magnum/Mesh.h>) instead.
    • Removed deprecated Mesh::Primitive enum, use MeshPrimitive instead.
    • Removed deprecated Sampler::maxAnisotropy() function, use Sampler::maxMaxAnisotropy() instead.
    • Removed deprecated Math::Geometry::Rectangle class, use Math::Range instead.
    • Removed deprecated SceneGraph::Animable::group() function, use SceneGraph::Animable::animables() instead.
    • Removed deprecated Shaders/magnumShadersResourceImport.hpp file, use Shaders/resourceImport.hpp instead.
    • Removed deprecated Text::TextRenderer alias, use Text::Renderer instead.
    • Removed long-deprecated BufferImage::setData() overload, use the other one instead.

Performance improvements

  • Faster vector multiplication in Math::Quaternion.
  • Saved one swizzle in Math::cross().
  • Allocation-free overloads of functions that took std::string just to pass its contents to OpenGL.

2014.06

Released 2014-06-30, tagged as v2014.06. See the release announcement for a high-level overview.

Dependency changes

  • Minimal required GCC version is now 4.7. Support for GCC 4.6 has been moved to compatibility branch (see mosra/magnum#18)

New features

Changes

  • Libraries and plugins in debug build configuration are installed to different locations, making it possible to have debug and release libraries installed alongside each other (see mosra/magnum#20, mosra/magnum#45)
  • Platform::Sdl2Application is now used everywhere (documentation, tutorials, examples) by default, replacing Platform::GlutApplication. The GLUT application is still available, though. See mosra/magnum#39.
  • The need for compiler compatibility mode is now automatically detected by CMake to avoid strange compilation errors later
  • Split out Texture functionality into dedicated TextureArray, MultisampleTexture and RectangleTexture classes to make their usage less error-prone
  • Buffer::invalidateData(), Buffer::invalidateSubData() and Renderer::resetNotificationStrategy() functions are enabled on OpenGL ES as a no-op
  • Added std::vector overload of MeshTools::combineIndexArrays() for greater runtime-usage flexibility
  • Platform::Sdl2Application now defaults to non-resizable window, you can change the behavior using Platform::Sdl2Application::Configuration::setWindowFlags()
  • It's now possible to import objects without materials
  • More robust OpenGL version checks when creating context
  • Thorough documentation review, fixes and improvements

Build system

Bug fixes

  • Fixed usage with OpenGL ES 3.1 contexts (it complained about invalid version)
  • Fixed compilation of Shaders::MeshVisualizer under WebGL and with ANGLE, see mosra/magnum#56
  • Fixed various build issues on Mac OS X, see mosra/magnum#51 and mosra/magnum#54

Deprecated APIs

  • Mesh::setVertexCount() and Mesh::setIndexCount() had nonintuitive behavior in some corner cases and are deprecated, use general Mesh::setCount() function instead
  • MeshView::setVertexRange() and four-/two-argument MeshView::setIndexRange() are deprecated for similar reason as above, use MeshView::setCount(), MeshView::setBaseVertex() and three-/one-argument MeshView::setIndexRange() instead
  • Texture::Target enum is deprecated as the API was too error-prone, use dedicated TextureArray, MultisampleTexture and RectangleTexture classes instead
  • Framebuffer::attachTexture*D() is deprecated, use more generic Framebuffer::attachTexture() and Framebuffer::attachTextureLayer() instead
  • FramebufferBlit::*Buffer enum values are deprecated, use shorter FramebufferBlit::Color and similar instead
  • Audio::Source::play(), SceneGraph::AbstractObject::setClean(), SceneGraph::AbstractObject::transformationMatrices() and similar taking std::initializer_list of pointers are deprecated, use versions taking list of references instead
  • MeshTools::compressIndices() and MeshTools::interleave() which filled Mesh and Buffer directly are deprecated as they had undesired side-effects in some cases, use the data-returning versions instead and then configure mesh and buffer manually
  • MeshTools::combineIndexedArrays() taking std::tuple is deprecated, use version taking std::pair instead
  • MeshTools::removeDuplicates() taking also list of indices is deprecated, use the function in conjunction with MeshTools::duplicate(). See function documentation for more information.
  • Parameter-less Mesh::draw() and MeshView::draw() are deprecated, use versions with explicit shader parameter instead
  • Deprecated implicit conversion of Resource<T, U> to U&, as it is not safe. Use explicit dereference operator instead.
  • Texture binding using *Texture::bind() is deprecated, use setup functions of particular shaders instead (e.g. Shaders::Phong::setDiffuseTexture())
  • Context::Flag::Robustness is deprecated, use Context::Flag::RobustAccess which reflects OpenGL naming better instead
  • Texture::maxLayers() has misleading naming and is deprecated, use Shader::maxCombinedTextureImageUnits() instead

Potential compatibility breakages, removed APIs

  • All functionality deprecated in 2013.10 has been removed, namely:
    • Removed deprecated raw-pointer versions of Buffer::setData() and Buffer::setSubData(), use overloads taking Containers::ArrayReference instead
    • Removed deprecated Magnum/ImageFormat.h header and ImageFormat/ ImageType enums, use Magnum/ColorFormat.h header and ColorFormat/ ColorType enums instead
    • Removed deprecated Matrix2 and Matrix2d typedefs, use Matrix2x2 and Matrix2x2d instead
    • Removed deprecated Magnum/Swizzle.h header and Magnum::swizzle() function, use Magnum/Math/Swizzle.h and Math::swizzle() instead
    • Removed deprecated *::maxSupported*() limit queries, use the less verbose *::max*() versions instead
    • Removed deprecated Platform::*Application::InputEvent::Modifier::*Button enum values, use Platform::*Application::*Event::buttons() function and Platform::*Application::*Event::Button enum instead
    • Platform::Sdl2Application::Configuration::Flag enum and related functions were replaced with WindowFlag, as the name would now conflict with context flags

Internal changes

  • Removed last remaining bits of global state, everything is now stored per-context.

2014.01

Released 2014-01-21, tagged as v2014.01. See the release announcement for a high-level overview.

Dependency changes

No dependency changes in this release.

New features

  • MSVC 2013 support in compatibility branch
  • Dependency-less plugins from Magnum Plugins repository are now part of Magnum to make their usage easier, in particular the MagnumFont, MagnumFontConverter, TgaImporter, TgaImageConverter and WavAudioImporter plugins.
  • Documented state of OpenGL support, mapping between OpenGL and Magnum API, general plugin usage and added troubleshooting page for most common building and rendering issues
  • Support for horizontal and vertical text alignment and multi-line text in Text::Renderer (line wrapping is still left up to the user)
  • New Font conversion utility utility for converting between font formats (e.g. creating distance-field raster font from TTF font). Enable it with WITH_FONTCONVERTER CMake option (currently Linux only), see magnum-fontconverter --help for more information.
  • Support for OpenGL object labels, debug message insertion and retrieval ( KHR_debug, EXT_debug_label and EXT_debug_marker extensions) (see mosra/magnum#42)
  • Platform::ScreenedApplication class allowing the users to easily use multiple independent screens in the application.
  • New 1D, 2D and 3D Math::Range class
  • Added red(), green(), blue(), cyan(), magenta() and yellow() convenience functions to Color3 and Color4 classes
  • Convenience Color3ub and Color4ub typedefs
  • New version() utility functions for converting Version enum value to major/minor version number and back
  • Added release() function to Image and Trade::ImageData for releasing ownership of the data, similar to std::unique_ptr::release() (see mosra/magnum#29)
  • *Image::dataSize() function for computing size of buffer required to store image of given size
  • Disallowing conversion of rvalue Image and Trade::ImageData to ImageReference as it would result in access to deleted memory (GCC 4.8.1/Clang only)
  • No-op fallback for *Texture::setMaxAnisotropy() in case EXT_texture_filter_anisotropic extension is not supported
  • Added round(), floor() and ceil() scalar/vector functions to Math namespace
  • Math::minmax() and Math::Vector2::minmax() functions
  • Modulo operations for integral Math::Vector classes
  • Ability to request context version in all windowed Platform::*Application classes
  • Mouse wheel support in Platform::NaClApplication::MouseEvent
  • No-op Platform::GlutApplication::keyReleaseEvent() and Platform::NaClApplication::Configuration::setTitle() functions to preserve source compatibility with other application classes.
  • SceneGraph::Drawable::drawables() function as a non-ambiguous alternative to group()
  • Ability to specify background color color in Shaders::Vector, allowing it to use without blending enabled (fully transparent black was used previously)
  • New Shaders::Generic class with common definitions, so you can configure mesh for the generic shader and render it with any other compatible shader
  • Convenience hasNormals(), hasTextureCoords2D() functions in Trade::MeshData2D and Trade::MeshData3D
  • OpenGL ES 3.0 build now shares list of vendor extensions with OpenGL ES 2.0 build (i.e. only those extensions that aren't part of ES 3.0 are present in Extensions)
  • All classes in documentation are now shown with corresponding #include path

Changes

  • Preferring absolute includes instead of relative (see mosra/magnum#36)
  • The magnum-distancefield utility is now named Distance Field conversion utility for consistency with other command-line utilities
  • ImageReference class now stores const data pointer instead of mutable one, modifying the data through the class interface isn't valid use case anyway
  • Added default template parameter to Buffer::data() and made *Image::data() templated to have them consistent. Note that this is source-compatible change.
  • Query::result<bool>() returns true if value is nonzero (was returning true only for value of 1 previously)
  • All functions in MeshTools namespace are now returning either Corrade::Containers::Array or std::unique_ptr instead of naked pointers to avoid accidental out-of-bounds access and memory leaks
  • All functions in Text namespace are now returning std::unique_ptr instead of naked pointers to avoid accidental memory leaks
  • Implementation of Platform::*Application::viewportEvent() is not required anymore, because in many cases the application doesn't need to react to window resize events at all
  • Textured Shaders::Flat now multiplies texture with the specified color instead of ignoring it. See also mosra/magnum#34
  • All deprecated functions and types are now emitting compiler warnings to encourage updating the code
  • Various documentation and example updates and improvements

Bug fixes

  • Fixed CubeMapTextureArray::image() function (more precisely it wasn't working at all). See also mosra/magnum#31.
  • Fixed wrong assertion in Texture::setWrapping() for rectangle textures
  • Fixed wrong assertion in AbstractImage::pixelSize() when computing size of separate depth and stencil formats
  • Mesh::addVertexBuffer() now properly computes offsets for matrix attributes
  • Taking index buffer offset into account in MeshView class
  • Fixed various issues with textured Shaders::Flat shader (actually the textured version was not working at all)
  • Various OS X-related fixes in Shaders library. See also mosra/magnum#27.
  • Fixed building issues when both SDL1 and SDL2 is installed on OS X. See also mosra/magnum#25, mosra/magnum#38.
  • Fixed building issues with CMake-generated XCode project on OS X. See also mosra/magnum#37.
  • Proper and failsafe OpenGL 3 context creation on OS X (3.0 is implemented only as core context, thus requesting 2.1 won't expose newer features). See also mosra/magnum#26, mosra/magnum#35 and mosra/magnum#43.
  • Fixed compilation issues with Clang and libc++
  • Fixed various compilation issues under MSVC (and worked around an insane amount of compiler bugs)

Deprecated APIs

  • Buffer::Usage enum is deprecated to reduce header dependencies, use global BufferUsage enum instead
  • Mesh::Primitive enum is deprecated to reduce header dependencies, use global MeshPrimitive enum instead
  • Sampler::maxAnisotropy() is deprecated to avoid naming conflict with *Texture::setMaxAnisotropy(), use Sampler::maxMaxAnisotropy() instead
  • Magnum::Geometry::Rectangle class (and Rectangle* typedefs) is deprecated, use more generic and feature-rich Math::Range instead.
  • Platform::Sdl2Application::Configuration::setFlags() function and related enum is deprecated to avoid naming conflict in the future, use Platform::Sdl2Application::Configuration::setWindowFlags() instead
  • SceneGraph::Animable::group() is deprecated, use non-ambiguous SceneGraph::Animable::animables() instead
  • Magnum/Shaders/magnumShadersResourceImport.hpp header is deprecated in favor of less verbose Magnum/Shaders/resourceImport.hpp
  • Text::TextRenderer class (and Text::TextRenderer2D, Text::TextRenderer3D typedefs) is deprecated, use less redundant name Text::Renderer instead

Potential compatibility breakages, removed APIs

  • Removed SceneGraph::*Transformation::move() from 2D transformation classes. It was originally meant for modifying draw order, but as the draw order is managed by SceneGraph::DrawableGroup class and not by parent object, this function is essentially useless.

Documentation

Internal changes

  • Added thorough tests for all core OpenGL functionality to make refactoring easier
  • Various internal optimizations and cleanup to make maintenance easier
  • Using Jenkins Continuous Integration to maintain compilable and bug-free state of the project more easily. Currently GCC 4.8, 4.7, 4.6, 4.5, 4.4, Clang 3.3, Clang 3.3 with libc++, Emscripten, x86-32/x86-64 Native Client and MinGW32 compilers are tested with both shared and static libraries. Separately testing builds with deprecated features enabled and disabled. Also explicitly testing desktop OpenGL, OpenGL ES 2.0, desktop OpenGL ES 2.0 emulation, OpenGL ES 3.0 and desktop OpenGL ES 3.0 emulation.
  • All files from src/ directory were moved to src/Magnum, external/ directory was moved to src/MagnumExternal (required to make inter-project includes absolute, as mentioned above)

2013.10

Released 2013-10-30, tagged as v2013.10. See the release announcement for a high-level overview.

Dependency changes

New features

Changes

  • Buffer::setData() and Buffer::setSubData() are now accepting Containers::ArrayReference for more convenient usage
  • Platform::*Application::viewportEvent() is not called at all if window size doesn't change, allowing for less cumbersome ofscreen rendering setups
  • Removed redundant operators from Math::*Matrix, use vectors for component-wise multiplication and division instead
  • Documentation updates and improvements to make the library more accessible for newcomers
  • Various build system updates for better compile times and easier installation

Bug fixes

  • Fixed compilation with Clang and libc++ (see mosra/magnum#12)
  • Fixes compilation of the Audio library on macOS (see mosra/magnum#19)
  • Fixed compatibility of builtin shaders with GLSL 1.20 and GLSL ES 1.00, added shader compilation tests to prevent this issue from reappearing (see mosra/magnum#17)
  • Extension support queries depend on selected GLSL version (see mosra/magnum-examples#3)
  • Properly exporting SceneGraph::AbstractCamera symbols (see mosra/magnum-bootstrap#3)

Deprecated APIs

  • Matrix2 and Matrix2d is deprecated, use Matrix2x2 and Matrix2x2d instead
  • swizzle() is deprecated, all of its functionality has been moved into Math::swizzle()
  • Buffer::setData() and Buffer::setSubData() overloads taking pair of data pointer and size are deprecated, use Containers::ArrayReference-based Buffer::setData() and Buffer::setSubData()
  • ImageFormat.h header, ImageFormat and ImageType enums are deprecated, use ColorFormat.h header, ColorFormat and ColorType enums which reflect OpenGL naming better instead
  • Platform::*Application::InputEvent::Modifier::*Button enum values are deprecated, use Platform::*Application::*Event::buttons() and Platform::*Application::*Event::Button enum instead
  • AbstractShaderProgram::maxSupportedVertexAttributeCount(), AbstractTexture::maxSupportedLayerCount() and Sampler::maxSupportedAnisotropy() are deprecated in favor of less verbose AbstractShaderProgram::maxVertexAttributes(), AbstractTexture::maxLayers() and Sampler::maxAnisotropy()

Documentation

Potential compatibility breakages, removed APIs

No deprecated API was removed in this release.

2013.08

Released 2013-08-30, tagged as v2013.08. See the project announcement for a high-level overview.