From 2bdd1edbbd8a0a52b829cb913584d3653f82ca0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 15 Feb 2018 23:37:13 +0100 Subject: [PATCH] doc: changelog update for the next release. --- doc/changelog.dox | 896 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 829 insertions(+), 67 deletions(-) diff --git a/doc/changelog.dox b/doc/changelog.dox index ebb337961..9401d6adc 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -36,23 +36,30 @@ See also: - @subpage changelog-extras - @subpage changelog-examples -@section changelog-latest Changes since 2015-05 snapshot +@section changelog-2018-02 2018.02 -@subsection changelog-latest-dependencies Dependency changes +Released 2018-02-15, tagged as +[v2018.02](https://github.com/mosra/magnum/releases/tag/v2018.02). -- Completely removed NaCl support (see https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html) -- Dropped support for the old MinGW32 (only MinGW-w64 is supported now) +@subsection changelog-2018-02-dependencies Dependency changes + +- Completely removed NaCl support (see https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html, + [mosra/magnum#198](https://github.com/mosra/magnum/issues/198)) +- Dropped support for the old MinGW32 (only MinGW-w64 is supported now) (see + [mosra/magnum#46](https://github.com/mosra/magnum/issues/46) - Bumped minimal CMake version to 2.8.12 - Removed support for macOS 10.8 and older - Dropped the `compatibility` branch and all support for MSVC 2013 and GCC < 4.7 -@subsection changelog-latest-new New features +@subsection changelog-2018-02-new New features -- MSVC 2015 and MSVC 2017 support in `master` branch +- MSVC 2015 and MSVC 2017 support in `master` branch (see + [mosra/magnum#96](https://github.com/mosra/magnum/issues/96), + [mosra/magnum#209](https://github.com/mosra/magnum/pull/209)) - ANGLE ES2/ES3 support, ability to create desktop GLES contexts on Windows - Windows Phone/Store support via ANGLE -- iOS support +- iOS support (see [mosra/magnum#82](https://github.com/mosra/magnum/issues/82)) - WebAssembly support when building for Emscripten - WebGL 2.0 support - New OpenGL extension support: @@ -95,6 +102,7 @@ See also: @extension{AMD,transform_feedback3_lines_triangles}, @extension{ARB,transform_feedback_overflow_query} desktop extension and their ES3 counterparts, if applicable + (see [mosra/magnum#53](https://github.com/mosra/magnum/issues/53)) - Compressed image support: - Added @ref CompressedColorFormat enum, @ref CompressedImage, @ref CompressedImageView and @ref CompressedBufferImage classes @@ -114,7 +122,8 @@ See also: - Published OpenGL test setup code to a new @ref OpenGLTester library and added GPU time benchmarking to it - Added @ref PixelStorage class, tracking OpenGL pixel storage state and - applying it prior to read and upload of image data + applying it prior to read and upload of image data (see + [mosra/magnum#104](https://github.com/mosra/magnum/issues/104)) - Added @ref NoCreate tag to control initialization of GL object classes - Added templated version of @ref Buffer::map() "Buffer::map*()" functions - New `BUILD_MULTITHREADED` @ref cmake "CMake option" and a corresponding @@ -137,9 +146,9 @@ See also: - Added @ref Context::isCoreProfile() - Added @ref TransformFeedback::maxVertexStreams() limit query -@subsubsection changelog-latest-new-audio Audio library +@subsubsection changelog-2018-02-new-audio Audio library -- Ported to Emscripten +- Ported to Emscripten (see [mosra/magnum#216](https://github.com/mosra/magnum/pull/216) - Added @ref Audio::Source::position(), @ref Audio::Source::velocity(), @ref Audio::Source::isRelative(), @ref Audio::Source::gain(), @ref Audio::Source::minGain(), @ref Audio::Source::maxGain(), @@ -147,24 +156,34 @@ See also: @ref Audio::Source::maxDistance(), @ref Audio::Source::direction(), @ref Audio::Source::innerConeAngle(), @ref Audio::Source::outerConeAngle(), @ref Audio::Source::outerConeGain(), @ref Audio::Source::pitch() getters + (see [mosra/magnum#107](https://github.com/mosra/magnum/pull/107)) - Added @ref Audio::Renderer::listenerPosition(), @ref Audio::Renderer::listenerOrientation(), @ref Audio::Renderer::listenerVelocity(), @ref Audio::Renderer::listenerGain(), @ref Audio::Renderer::dopplerFactor(), @ref Audio::Renderer::speedOfSound(), - @ref Audio::Renderer::distanceModel() getters + @ref Audio::Renderer::distanceModel() getters (see + [mosra/magnum#107](https://github.com/mosra/magnum/pull/107)) - Added debug operator for @ref Audio::Renderer::DistanceModel - Added @ref Audio::Playable, @ref Audio::Listener scene graph features and - @ref Audio::PlayableGroup feature group + @ref Audio::PlayableGroup feature group (see + [mosra/magnum#110](https://github.com/mosra/magnum/pull/110), + [mosra/magnum#116](https://github.com/mosra/magnum/pull/116)) - New namespace @ref Audio::Extensions for OpenAL extensions, similar to - @ref Extensions for OpenGL + @ref Extensions for OpenGL (see [mosra/magnum#111](https://github.com/mosra/magnum/pull/111)) - HRTF support through @ref Audio::Context::Configuration::setHrtf(), @ref Audio::Context::isHrtfEnabled(), @ref Audio::Context::hrtfStatus() + (see [mosra/magnum#121](https://github.com/mosra/magnum/pull/121)) - Floating-point audio support in @ref Audio::Buffer - @ref Audio::WavImporter "WavAudioImporter" plugin now supports more - formats, is more flexible and gives better errors + formats, is more flexible and gives better errors (see + [mosra/magnum#174](https://github.com/mosra/magnum/issues/174), + [mosra/magnum#175](https://github.com/mosra/magnum/pull/175), + [mosra/magnum#176](https://github.com/mosra/magnum/pull/176), + [mosra/magnum#177](https://github.com/mosra/magnum/pull/177), + [mosra/magnum#179](https://github.com/mosra/magnum/pull/179)) - New @ref magnum-al-info "magnum-al-info" utility, available for all desktop platforms and Emscripten -@subsubsection changelog-latest-new-debugtools DebugTools library +@subsubsection changelog-2018-02-new-debugtools DebugTools library - Added @ref DebugTools::bufferData(), @ref DebugTools::bufferSubData() and @ref DebugTools::textureSubImage() debugging helpers to emulate missing @@ -172,12 +191,13 @@ See also: - New @ref DebugTools::CompareImage class for fuzzy image comparison in @ref Corrade::TestSuite -@subsubsection changelog-latest-new-math Math library +@subsubsection changelog-2018-02-new-math Math library - New @ref Math::Bezier class for handling N-dimensional M-order Bézier - curves + curves (see [mosra/magnum#165](https://github.com/mosra/magnum/pull/165)) - New @ref Math::Frustum class and @ref Math::Geometry::Intersection::pointFrustum(), - @ref Math::Geometry::Intersection::boxFrustum() functions + @ref Math::Geometry::Intersection::boxFrustum() functions (see + [mosra/magnum#185](https://github.com/mosra/magnum/pull/185) - New @ref Math::Half class, @link Math::Literals::operator""_h @endlink literal and @ref Math::packHalf() and @ref Math::unpackHalf() functions - New @ref Math::Color3::fromSrgb(), @ref Math::Color3::toSrgb(), @@ -189,12 +209,16 @@ See also: and @ref Math::xyzToXyY() - New @ref Math::pack() and @ref Math::unpack() functions for (un)packing floats to an integral range with given number of bits -- Implemented @ref Math::sclerp() for dual quaternions +- Implemented @ref Math::sclerp() for dual quaternions (see + [mosra/magnum#114](https://github.com/mosra/magnum/pull/114), + [mosra/magnum#117](https://github.com/mosra/magnum/issues/117), + [mosra/magnum#118](https://github.com/mosra/magnum/pull/118), + [mosra/magnum#122](https://github.com/mosra/magnum/pull/122) - Added @ref Math::sincos() for real and @ref Math::Dual numbers - Added @ref Math::clamp() taking three vectors - Added @ref Math::min() / @ref Math::max() taking a vector and a scalar - Added @ref Math::min(), @ref Math::max() and @ref Math::minmax() for value - ranges + ranges (see [mosra/magnum#193](https://github.com/mosra/magnum/pull/193)) - Added @ref Math::pow(), @ref Math::log() and @ref Math::exp() - Added @ref Math::Algorithms::qr(), @ref Math::Algorithms::gaussJordanInverted(), @ref Math::Algorithms::kahanSum() @@ -220,30 +244,36 @@ See also: - Ability to construct @ref Math::DualQuaternion from dual vector and scalar - Ability to save and restore @ref Deg and @ref Rad from @ref Corrade::Utility::Configuration -- Explicit bool conversion for @ref Math::BoolVector +- Explicit bool conversion for @ref Math::BoolVector (see + [mosra/magnum#182](https://github.com/mosra/magnum/issues/182)) - Component-wise comparison for @ref Math::RectangularMatrix - Ability to construct @ref Math::RectangularMatrix and derived classes with one value for all components -@subsubsection changelog-latest-new-platform Platform libraries +@subsubsection changelog-2018-02-new-platform Platform libraries -- New @ref Platform::GlfwApplication class +- New @ref Platform::GlfwApplication class (see + [mosra/magnum#141](https://github.com/mosra/magnum/pull/141), + [mosra/magnum#160](https://github.com/mosra/magnum/pull/160)) - Text input support in @ref Platform::Sdl2Application and - @ref Platform::GlfwApplication + @ref Platform::GlfwApplication (see [mosra/magnum#129](https://github.com/mosra/magnum/issues/129)) - Added @ref Platform::WindowlessWindowsEglApplication and @ref Platform::WindowlessIosApplication for ANGLE and iOS - New @ref Platform::WindowlessEglApplication that works on headless NVidia, - Mesa drivers and Emscripten + Mesa drivers and Emscripten (see [mosra/magnum#133](https://github.com/mosra/magnum/pull/133)) - New @ref Platform::WindowlessGlxContext "Platform::Windowless*Context" classes that manage OpenGL context to make threaded context creation possible - Ported @ref magnum-info "magnum-info" to Emscripten - First-class support for scroll events in - @ref Platform::Sdl2Application::MouseScrollEvent + @ref Platform::Sdl2Application::MouseScrollEvent (see + [mosra/magnum#157](https://github.com/mosra/magnum/pull/157)) - Added @ref Platform::Sdl2Application::MouseEvent::clickCount() - Added @ref Platform::Sdl2Application::multiGestureEvent() - Exposing key repeat in @ref Platform::Sdl2Application::KeyEvent::isRepeated() "Platform::*Application::KeyEvent::isRepeated()" + (see [mosra/magnum#161](https://github.com/mosra/magnum/issues/161), + [mosra/magnum#162](https://github.com/mosra/magnum/pull/162)) - Added @ref Platform::Sdl2Application::setMinimalLoopPeriod(), which, along with @ref Platform::Sdl2Application::setSwapInterval() replaces @ref Timeline::setMinimalFrameTime() @@ -253,7 +283,8 @@ See also: - Added @ref Platform::Sdl2Application::tickEvent() - Added @ref Platform::Context::tryCreate(), which allows the context to be destructed and created again in case the version is not what the - application wants (as opposed to just aborting the application). + application wants (as opposed to just aborting the application) (see + [mosra/magnum#105](https://github.com/mosra/magnum/issues/105)) - Added @ref Platform::Sdl2Application::Configuration::setSRGBCapable() - Added @ref Platform::Sdl2Application::Configuration::WindowFlag::Borderless and @ref Platform::Sdl2Application::Configuration::WindowFlag::AllowHighDpi @@ -268,7 +299,8 @@ See also: - Added modifier keys to @ref Platform::Sdl2Application::KeyEvent::Key "Platform::*Application::KeyEvent::Key" - Added @ref Platform::Sdl2Application::InputEvent::Modifier::Super to be - consistent with @ref Platform::GlfwApplication + consistent with @ref Platform::GlfwApplication (see + [mosra/magnum#159](https://github.com/mosra/magnum/pull/159)) - Added @ref Platform::Sdl2Application::KeyEvent::keyName() "Platform::*Application::KeyEvent::keyName()" - It's now possible to iterate main loop manually using @ref Platform::Sdl2Application::mainLoopIteration() @@ -276,21 +308,21 @@ See also: @ref Platform::Sdl2Application and @ref Platform::WindowlessEglApplication for more information -@subsubsection changelog-latest-new-primitives Primitives library +@subsubsection changelog-2018-02-new-primitives Primitives library - New @ref Primitives::axis2D() and @ref Primitives::axis3D() primitives -@subsubsection changelog-latest-new-shaders Shaders library +@subsubsection changelog-2018-02-new-shaders Shaders library - Ability to construct all @ref Shader classes without an OpenGL context present using @ref NoCreate -@subsubsection changelog-latest-new-text Text library +@subsubsection changelog-2018-02-new-text Text library - New @ref Text::AbstractFont::ascent() and @ref Text::AbstractFont::descent() font properties -@subsubsection changelog-latest-new-trade Trade library +@subsubsection changelog-2018-02-new-trade Trade library - New @ref magnum-imageconverter "magnum-imageconverter" utility - Initial implementation of @ref Trade::CameraData and @ref Trade::LightData @@ -312,7 +344,8 @@ See also: - @ref Trade::AbstractImporter and all `Trade::*Data` classes now provide member `importerState()` functions allowing the user to access importer-specific state -- Added @ref Trade::AbstractImporter::openState() +- Added @ref Trade::AbstractImporter::openState() (see + [mosra/magnum#225](https://github.com/mosra/magnum/pull/225) - @ref magnum-distancefieldconverter "magnum-distancefieldconverter" now uses @ref Trade::AnyImageConverter "AnyImageConverter" by default - @ref Trade::TgaImporter "TgaImporter" sets proper @ref PixelStorage @@ -320,7 +353,7 @@ See also: - @ref Trade::TgaImageConverter "TgaImageConverter" now properly handles @ref PixelStorage parameters -@subsection changelog-latest-changes Changes and improvements +@subsection changelog-2018-02-changes 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 @@ -329,7 +362,7 @@ See also: them to a mesh - @ref Texture::setStorage() "*Texture::setStorage()" fallback implementation on OpenGL ES 2.0 and WebGL 1.0 now properly translates sized texture - formats to what the drivers expect + formats to what the drivers expect (see [mosra/magnum#214](https://github.com/mosra/magnum/issues/214)) - @ref Trade::TgaImporter "TgaImporter" and @ref Trade::TgaImageConverter "TgaImageConverter" now consistently use RGB(A) on all platforms and don't require BGR(A) on desktop @@ -359,8 +392,10 @@ See also: example for old-style texture allocation using @ref Texture::setImage()) - Various workarounds to make the engine working better on SVGA3D drivers (VMWare guest) +- Various updates and code modernization (see + [mosra/magnum#200](https://github.com/mosra/magnum/pull/200)) -@subsubsection changelog-latest-changes-math Math library +@subsubsection changelog-2018-02-changes-math Math library - @ref Double types are no longer restricted to just desktop GL builds, all related types also work on ES and WebGL builds @@ -376,7 +411,7 @@ See also: - @ref Math::Vector::minmax() now works on arbitrary vectors instead of just @ref Math::Vector2 -@subsubsection changelog-latest-changes-platform Platform library +@subsubsection changelog-2018-02-changes-platform Platform library - Requesting core OpenGL context by default in @ref Platform::WindowlessGlxApplication and @ref Platform::Sdl2Application. On binary NVidia, AMD and Windows Intel @@ -388,30 +423,40 @@ See also: - @ref Platform::Sdl2Application now shows the window only once the GL context is fully created to avoid flickering -@subsubsection changelog-latest-changes-shaders Shaders library +@subsubsection changelog-2018-02-changes-shaders Shaders library - @ref Shaders::Flat now sets default color to white only in textured version - @ref Shaders::Phong gained the ability to have both color and texture -- @ref Shaders::Phong is now able to do alpha-masking +- @ref Shaders::Phong is now able to do alpha-masking (see + [mosra/magnum#112](https://github.com/mosra/magnum/issues/112), + [mosra/magnum-examples#29](https://github.com/mosra/magnum-examples/issues/29)) -@subsection changelog-latest-buildsystem Build system +@subsection changelog-2018-02-buildsystem Build system - Continuous testing for Linux, macOS, Windows MSVC, Windows MinGW, Windows RT, iOS, Android and Emscripten on [Travis CI](https://travis-ci.org/mosra/magnum) and [AppVeyor CI](https://ci.appveyor.com/project/mosra/magnum), with code coverage on [codecov.io](https://codecov.io/gh/mosra/magnum); replacing the - unmaintained and outdated Jenkins configuration + unmaintained and outdated Jenkins configuration (see + [mosra/magnum#99](https://github.com/mosra/magnum/issues/99), + [mosra/magnum#120](https://github.com/mosra/magnum/pull/120), + [mosra/magnum#142](https://github.com/mosra/magnum/pull/142), + [mosra/magnum#203](https://github.com/mosra/magnum/pull/203)) - Support for CMake subprojects. You can now clone Magnum into a subdirectory in your project and add it using @cmake add_subdirectory() @ce. The @cmake find_package() @ce command will then use the CMake subproject - instead of looking for it in system-wide locations. + instead of looking for it in system-wide locations. See + [mosra/magnum#49](https://github.com/mosra/magnum/issues/49). + [mosra/magnum#140](https://github.com/mosra/magnum/issues/140). - Reworked CMake buildsystem to use the new imported target workflow, see - @ref cmake for more information + @ref cmake for more information (see + [mosra/magnum#103](https://github.com/mosra/magnum/issues/103)) - CMake targets are now organized in folders for better development experience in IDEs such as Visual Studio or Xcode - Added @ref building-packages-brew "Homebrew package" - Improvements and dependency updates to the - @ref building-packages-deb "Debian package" + @ref building-packages-deb "Debian package" (see + [mosra/magnum#119](https://github.com/mosra/magnum/issues/119)) - Ability to build OpenGL tests also on Windows and macOS (see `BUILD_GL_TESTS` @ref building-features "CMake option") - Ability to override the implicit plugin directory using a @@ -419,17 +464,22 @@ See also: - 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. -- `MACOSX_RPATH` is now enabled by default on CMake 3.0+ + manually register resources when using Shaders library in static builds + (see [mosra/magnum-examples#9](https://github.com/mosra/magnum-examples/issues/9)) +- `MACOSX_RPATH` is now enabled by default on CMake 3.0+ (see + [mosra/magnum#126](https://github.com/mosra/magnum/pull/126) - Enabling only C++ in CMake @cmake project() @ce call, if possible, to speed up initial CMake run - Windowless application libraries now make use of the `BUILD_STATIC_PIC` @ref cmake "CMake option" - Fixed `FindSDL2.cmake` module to work out-of-the-box on Windows and macOS + (see [mosra/magnum#166](https://github.com/mosra/magnum/pull/166)) +- Fixed `FindSDL2.cmake` to link to EGL when targeting GLES (see + [mosra/magnum-examples#9](https://github.com/mosra/magnum-examples/issues/9)) - Bundling a patched version of `FindOpenAL.cmake` to make it working on Emscripten -@subsection changelog-latest-bugfixes Bug fixes +@subsection changelog-2018-02-bugfixes Bug fixes - Wrapping mode for @ref CubeMapTexture is now correctly two-dimensional instead of three-dimensional, wrapping mode for @ref Texture2DArray "TextureNDArray" @@ -446,13 +496,17 @@ See also: - Fixed @ref TextureTools::distanceField() on 3.0 <= GL < 3.2 - Fixed driver crash on AMD with @ref TextureTools::distanceField() - @ref Framebuffer::attachCubeMapTexture() incorrectly behaved as a layered - attachment + attachment (see [mosra/magnum#123](https://github.com/mosra/magnum/issues/123)) - Fixed object label queries using the @extension{EXT,debug_label} extension - @extension{EXT,direct_state_access} function was accidentally used in @extension{ARB,direct_state_access} code path, causing crashes on Mesa - Properly export @ref Framebuffer::DrawAttachment to avoid linker failures on Windows +- Fixed @ref Framebuffer attachments on GLES2 drivers w/o separate read/draw + bindings (see [mosra/magnum#204](https://github.com/mosra/magnum/issues/204)) +- Fixed @ref Framebuffer binding on WebGL (see + [mosra/magnum#134](https://github.com/mosra/magnum/pull/134)) - On Emscripten, @ref Platform::Sdl2Application was by default rendering a 800x600 canvas to an area of 640x480 pixels, causing severe aliasing. Canvas is now by default sized to 640x480 to match the default CSS style. @@ -465,17 +519,31 @@ See also: - Fixed @ref Trade::ObjImporter on Android - Fixed assertion when using @ref DebugTools::ObjectRenderer - Fixed appearance of @ref Primitives::Cylinder::solid() and - @ref Primitives::Circle::solid() + @ref Primitives::Circle::solid() (see [mosra/magnum#197](https://github.com/mosra/magnum/pull/197), + [mosra/magnum#220](https://github.com/mosra/magnum/pull/220)) - Fixed a possible OOB access when reading @ref Math::Vector / @ref Math::RectangularMatrix from @ref Corrade::Utility::Configuration - Fixed unfortunate interaction of VAOs and index buffers on platforms without direct state access -- Fixed resetting a bit in @ref Math::BoolVector::set() +- Fixed resetting a bit in @ref Math::BoolVector::set() (see + [mosra/magnum#208](https://github.com/mosra/magnum/issues/208), + [mosra/magnum# - @ref Audio::Context::hrtfSpecifierString() was crashing on systems supporting only @alc_extension{SOFTX,HRTF} and not @alc_extension{SOFT,HRTF} -- Fixed bad interaction of builtin OpenGL headers and Qt on macOS +- Fixed bad interaction of builtin OpenGL headers and Qt on macOS (see + [mosra/magnum#212](https://github.com/mosra/magnum/issues/212)) +- Fixed building for Android with standard build systems (see + [mosra/magnum#131](https://github.com/mosra/magnum/issues/131)) +- Fixed building of WGL context library (see + [mosra/magnum#137](https://github.com/mosra/magnum/pull/137)) +- Various compilation warning/error fixes on various compilers (see + [mosra/magnum#100](https://github.com/mosra/magnum/issues/100), + [mosra/magnum#109](https://github.com/mosra/magnum/issues/109), + [mosra/magnum#138](https://github.com/mosra/magnum/pull/138), + [mosra/magnum#189](https://github.com/mosra/magnum/issues/189), + [mosra/magnum#190](https://github.com/mosra/magnum/pull/190)) -@subsection changelog-latest-deprecated Deprecated APIs +@subsection changelog-2018-02-deprecated Deprecated APIs - `Timeline::setMinimalFrameTime()` is deprecated, use @ref Platform::Sdl2Application::setSwapInterval() "Platform::*Application::setSwapInterval()" @@ -512,7 +580,8 @@ See also: @ref Corrade::Containers::ArrayView instead - Templated @ref Buffer::data(), @ref Buffer::subData() and @ref Buffer::map() are deprecated, use the non-templated versions in - combination with @ref Corrade::Containers::arrayCast() instead + combination with @ref Corrade::Containers::arrayCast() instead (see + [mosra/magnum#213](https://github.com/mosra/magnum/issues/213)) - @ref Context::current() and @ref Audio::Context::current() returning a pointer is deprecated, it's returning a reference now and asserts that a context exists. Use @ref Context::hasCurrent() and @ref Audio::Context::hasCurrent() @@ -550,7 +619,7 @@ See also: - `Audio::Context::hrtfSpecifier()` is deprecated, use @ref Audio::Context::hrtfSpecifierString() instead -@subsection changelog-latest-compatibility Potential compatibility breakages, removed APIs +@subsection changelog-2018-02-compatibility Potential compatibility breakages, removed APIs - The @ref Math::Geometry::Distance and @ref Math::Geometry::Intersection classes are now a namespace (might break `using` declarations, but @@ -598,40 +667,733 @@ See also: instead of just `glfw3.h`). The @ref Platform::GlfwApplication now depends on this, so be sure to update your copy to avoid build issues. -@subsection changelog-latest-performance Performance improvements +@subsection changelog-2018-02-performance Performance improvements - Reduced size of and number of allocations in @ref Mesh class. -@subsection changelog-latest-docs Documentation +@subsection changelog-2018-02-docs Documentation - New documentation theme powered by [m.css](http://mcss.mosra.cz) and - related massive updates of *everything* + related massive updates of *everything* (see + [mosra/magnum#113](https://github.com/mosra/magnum/issues/113)) - Explicit list of extensions that are available in WebGL builds - New page explaining @ref opengl-wrapping "OpenGL wrapper layer" - Documented extra CMake modules in @ref cmake-modules - The @ref building documentation now prefers package installation instead of manual build +- Clarified behavior of @ref Math::Matrix4::lookAt() (see + [mosra/magnum#127](https://github.com/mosra/magnum/issues/127)) - Documented how to use Vcpkg packages +- Updated links to OpenGL API documentation (see + [mosra/magnum#196](https://github.com/mosra/magnum/pull/196) +- Various other documentation updates (see + [mosra/magnum#94](https://github.com/mosra/magnum/pull/94), + [mosra/magnum#135](https://github.com/mosra/magnum/pull/135), + [mosra/magnum#170](https://github.com/mosra/magnum/issues/170), + [mosra/magnum-plugins#17](https://github.com/mosra/magnum-plugins/issues/17)) + +@section changelog-2015-05 2015.05 + +Released 2015-05-09, tagged as +[v2015.05](https://github.com/mosra/magnum/releases/tag/v2015.05). See the +[release announcement](http://blog.magnum.graphics/announcements/may-2015-updates/) +for a high-level overview. + +@subsection changelog-2015-05-new New features + +- Proper extension loading for OpenGL ES 2.0, 3.0 and 3.1 using flextGL. +- Enabled already implemented functionality on OpenGL ES 3.1. +- Support for new OpenGL functionality: + + - Support for @extension{ARB,direct_state_acccess} (OpenGL 4.5) + everywhere except in Mesh. + - Support for @extension{ARB,conditional_render_inverted} (OpenGL + 4.5) in @ref SampleQuery. + - Support for @extension{ARB,get_texture_sub_image} (OpenGL 4.5) in + @ref Texture::subImage() "*Texture::subImage()". + - Support for @extension{EXT,transform_feedback}, + @extension{ARB,transform_feedback2} (OpenGL 3.0, 4.0, OpenGL ES 3.0) in + new @ref TransformFeedback class, added + @ref Renderer::Feature::RasterizerDiscard. + - Support for @extension{ARB,robustness_isolation} in + @ref Renderer::graphicsResetStatus(). + - Support for @extension{ARB,framebuffer_sRGB} (OpenGL 3.0) in + @ref Renderer::Feature::FramebufferSRGB. + - Support for @extension{OES,texture_npot} ES extension. + - Support for debug groups from @extension{KHR,debug} (OpenGL 4.5) and + @extension{EXT,debug_marker} extensions in @ref DebugGroup class. + +- Added @ref CubeMapTexture::image() "CubeMapTexture::*image()" that + returns all six faces together. +- Added @ref Primitives::Cube::solidStrip(). +- Added @ref AbstractShaderProgram::attachShaders() as a list-based + complement to @ref Shader::compile() and + @ref AbstractShaderProgram::link(). +- Separated @cpp Renderer::setFeature() @ce into shorter + @ref Renderer::enable() and @ref Renderer::disable(). +- Added @cpp tau() @ce, @cpp piHalf() @ce, @cpp e() @ce, @cpp nan() @ce and + @cpp inf() @ce to @ref Math::Constants. +- Added @ref Math::Matrix4::shearingXY() "Math::Matrix[34]::shearing*()". +- Added @ref Math::Matrix4::lookAt() (see [mosra/magnum#88](https://github.com/mosra/magnum/issues/88)). +- Added @ref Math::Vector::pad(). +- Added @ref Math::div(). +- Using range-based-for to traverse object children and features in + @ref SceneGraph and screens in @ref Platform::BasicScreenedApplication "Platform::ScreenedApplication". +- Convenience overload for @ref Framebuffer::read() "*Framebuffer::read()" + and @ref Texture::image() "*Texture::image()" that returns the queried + image by value instead of as parameter. +- Added @ref Buffer::uniformOffsetAlignment() and + @ref Mesh::maxElementIndex() limit queries. +- Added @ref AbstractTexture::unbind() for unbinding range of texture + units. +- Added @ref SceneGraph::AbstractObject::addFeature() and + @ref SceneGraph::Object::addChild() functions (see [mosra/magnum#86](https://github.com/mosra/magnum/issues/86)). +- VSync support in @ref Platform::Sdl2Application. +- Added `Platform::*Context` libraries for users which want to use custom + windowing toolkits instead of the ones provided. +- Improved documentation about @ref Shaders namespace, added sample image + for each. + +@subsection changelog-2015-05-changes Changes + +- Using [flextGL](https://github.com/ginkgo/flextgl) instead of `glLoadGen` + for OpenGL extension loading +- @ref Platform::Sdl2Application now tries to create core context on all + platforms, not just OSX (see [mosra/magnum#80](https://github.com/mosra/magnum/issues/80)). +- @ref Buffer::bind(), @ref Buffer::unbind() and @ref Buffer::Target is + now used for indexed buffer binding only. +- Moved static binary operations from @ref Math classes into free functions + for more convenient usage (see [mosra/magnum#74](https://github.com/mosra/magnum/issues/74)). +- Better algorithm for comparing floating-point values. +- Ensuring that all OpenGL objects are properly created before using them. +- Using @cpp const char @ce instead of @cpp const unsigned char @ce for raw + binary data. +- Removed annoying restriction when adding reference-counted resources to + @ref ResourceManager. +- Extension querying cleanup: + - Removed @extension{APPLE,flush_buffer_range} extension. + - Replaced @extension{APPLE,vertex_array_object} with + @extension{ARB,vertex_array_object}. + - Replaced @extension{NV,half_float} with @extension{ARB,half_float_vertex}. + - Replaced @extension{EXT,framebuffer_sRGB} with @extension{ARB,framebuffer_sRGB}. +- Documentation cleanup, fixes and improvements. + +@subsection changelog-2015-05-buildsystem 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](https://github.com/mosra/magnum/issues/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](https://github.com/mosra/magnum/issues/69), + [mosra/magnum#83](https://github.com/mosra/magnum/issues/83)). + +@subsection changelog-2015-05-bugfixes Bug fixes + +- Fixed @ref TextureTools::distanceField() to work in GLSL < 4.20 (see + [mosra/magnum#62](https://github.com/mosra/magnum/issues/62)). +- Fixed @ref Shaders::MeshVisualizer to work in GLSL ES. +- Fixed @ref Shaders::Vector "Shaders::*Vector" on Intel GPUs. +- Fixed assertion on contexts without default framebuffer (see + [mosra/magnum#93](https://github.com/mosra/magnum/issues/93)). +- Fixed cases where shader would use extension that is not advertised by the + driver. +- Properly handle case where + @fn_gl_extension{VertexArrayVertexAttribDivisor,EXT,direct_state_access} is + not available in the driver (see [mosra/magnum#77](https://github.com/mosra/magnum/issues/77)). +- Removed superfluous level argument from @ref Framebuffer::attachTexture() "Framebuffer::attachTexture*()" + overloads for texture types that don't support mipmapping. +- Proper no-op fallback for @ref Framebuffer::invalidate() "*Framebuffer::invalidate()" + on platforms where the extensions is not supported (see + [mosra/magnum#63](https://github.com/mosra/magnum/issues/63)). +- Fixed garbage characters in shader compilation output (see + [mosra/magnum#87](https://github.com/mosra/magnum/issues/87)). +- Fixed memory corruption on MSVC 2013 (see [mosra/magnum#70](https://github.com/mosra/magnum/issues/70)). +- Fixed potential memory corruption errors with static build (see + [mosra/magnum#79](https://github.com/mosra/magnum/issues/79)). +- Fixed aspect-ratio-corrected projection with inverted Y in + @ref SceneGraph::Camera3D "SceneGraph::Camera*D". +- Fixed wheel direction in @ref Platform::Sdl2Application (see + [mosra/magnum#68](https://github.com/mosra/magnum/issues/68)). +- Fixed bogus version check in @ref Platform::WindowlessCglApplication (see + [mosra/magnum#92](https://github.com/mosra/magnum/issues/92)) +- Fixed matrix to quaternion conversion algorithm. +- Two different headers in @ref Magnum::Primitives had the same include guard + by accident (see [mosra/magnum#72](https://github.com/mosra/magnum/issues/53)) +- Various compilation fixes on various platforms (see + [mosra/magnum#71](https://github.com/mosra/magnum/pull/71)) + +@subsection changelog-2015-05-deprecated Deprecated APIs + +- The `Magnum/Query.h` header is deprecated, use one of + `Magnum/PrimitiveQuery.h`, `Magnum/SampleQuery.h` or + `Magnum/TimerQuery.h` instead. +- Using @ref Buffer::Target as constructor or @ref Buffer::setTargetHint() + parameter is deprecated, use @ref Buffer::TargetHint instead. +- The @cpp SceneGraph::TransformationType @ce enum is depracted, use separate + `()` and `Local()` variants instead. +- @cpp SceneGraph::AbstractObject::hasFeatures() @ce, @cpp firstFeature() @ce, + @cpp lastFeature() @ce, @cpp SceneGraph::Object::hasChildren() @ce, + @cpp firstChild() @ce and @cpp lastChild() @ce are deprecated, use methods on + linked list returned by @ref SceneGraph::AbstractObject::features() and + @ref SceneGraph::Object::children() instead. +- @cpp Platform::ScreenedApplication::frontScreen() @ce and + @cpp Platform::ScreenedApplication::backScreen() @ce are deprecated, use + methods on linked list returned by + @ref Platform::BasicScreenedApplication::screens() "Platform::ScreenedApplication::screens()" + instead. +- @ref Framebuffer::read() "*Framebuffer::read()" functions taking two + vectors are deprecated, use overload taking @ref Range2Di instead. +- The @cpp Mesh::maxVertexAttributes() @ce function is deprecated, use + @ref AbstractShaderProgram::maxVertexAttributes() instead. +- @cpp Math::Vector::dot() @ce, @cpp Math::Complex::dot() @ce, + @cpp Math::Quaternion::dot() @ce, @cpp Math::Vector::angle() @ce, + @cpp Math::Complex::angle() @ce, @cpp Math::Quaternion::angle() @ce, + @cpp Math::Quaternion::lerp() @ce, @cpp Math::Quaternion::slerp() @ce, + @cpp Math::Vector2::cross() @ce and @cpp Math::Vector3::cross() @ce are + deprecated, use @ref Math::dot(), @ref Math::angle(), + @ref Math::lerp(), @ref Math::slerp() and @ref Math::cross() instead (see + [mosra/magnum#74](https://github.com/mosra/magnum/issues/74)) +- The @cpp *Framebuffer::bind(FramebufferTarget) @ce function is deprecated, + use parameter-less @ref Framebuffer::bind() "*Framebuffer::bind()" + instead. +- The @cpp FramebufferTarget::ReadDraw @ce enum value is deprecated, use + separate @cpp FramebufferTarget::Read @ce and @cpp FramebufferTarget::Draw @ce + values instead. +- @ref 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 + @ref Magnum/DebugOutput.h instead (see [mosra/magnum#89](https://github.com/mosra/magnum/pull/89)) +- The @cpp DebugMessage::Severity @ce enum is deprecated, use + @ref DebugOutput::Severity instead. +- The @cpp DebugMessage::Callback @ce typedef, @cpp DebugMessage::setCallback() @ce + and @cpp DebugMessage::setDefaultCallback() @ce function is deprecated, use + @ref DebugOutput::Callback, @ref DebugOutput::setCallback() and + @ref DebugOutput::setDefaultCallback() instead. +- The @cpp DebugMessage::maxLoggedMessages() @ce and + @cpp DebugMessage::maxMessageLength() @ce functions are deprecated, use + @ref DebugOutput::maxLoggedMessages() and + @ref DebugOutput::maxMessageLength() instead. +- The @cpp DebugMessage::setEnabled() @ce function and related values from + @cpp DebugMessage::Source @ce enum are deprecated, use + @ref DebugOutput::setEnabled() along with @ref DebugOutput::Source, + @ref DebugOutput::Type and @ref DebugOutput::Severity instead. +- Parameter-less @cpp *Query @ce constructor and parametrized + @cpp *Query::begin() @ce function are deprecated, use constructor with + parameter and parameter-less @ref Query::begin() "*Query::begin()" + instead. + +@subsection changelog-2015-05-compatibility Potential compatibility breakages, removed APIs + +- All functionality @ref changelog-2014-01-deprecated "deprecated in 2014.01" + has been removed, namely: + - Removed deprecated ability to use relative includes (e.g. + @cpp #include @ce), use absolute paths (@cpp #include @ce) + instead. + - Removed deprecated @cpp Mesh::Primitive @ce enum, use @ref MeshPrimitive + instead. + - Removed deprecated @cpp Sampler::maxAnisotropy() @ce function, use + @ref Sampler::maxMaxAnisotropy() instead. + - Removed deprecated @cpp Math::Geometry::Rectangle @ce class, use + @ref Math::Range instead. + - Removed deprecated @cpp SceneGraph::Animable::group() @ce function, use + @ref SceneGraph::Animable::animables() instead. + - Removed deprecated `Shaders/magnumShadersResourceImport.hpp` file, use + `Shaders/resourceImport.hpp` instead. + - Removed deprecated @cpp Text::TextRenderer @ce alias, use + @ref Text::Renderer instead. + - Removed long-deprecated @ref BufferImage::setData() overload, use the + other one instead. + +@subsection changelog-2015-05-performance Performance improvements + +- Faster vector multiplication in @ref Math::Quaternion. +- Saved one swizzle in @ref Math::cross(). +- Allocation-free overloads of functions that took @cpp std::string @ce just to + pass its contents to OpenGL. + +@section changelog-2014-06 2014.06 + +Released 2014-06-30, tagged as +[v2014.06](https://github.com/mosra/magnum/releases/tag/v2014.06). See the +[release announcement](http://blog.magnum.graphics/announcements/june-2014-updates/) +for a high-level overview. + +@subsection changelog-2014-06-dependencies 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](https://github.com/mosra/magnum/issues/18)) + +@subsection changelog-2014-06-new New features + +- Experimental Android support, see @ref building-cross-android "building documentation" + for more information +- Initial implementation of @ref Platform::AndroidApplication class +- @ref Platform::WindowlessWglApplication and @ref Platform::WindowlessCglApplication, + which enable @ref magnum-info, @ref magnum-distancefieldconverter and + @ref magnum-fontconverter utilities on OS X and Windows. See + [mosra/magnum#40](https://github.com/mosra/magnum/issues/40) and + [mosra/magnum#59](https://github.com/mosra/magnum/pull/59). +- @ref Trade::ObjImporter "ObjImporter" plugin, mesh import only (no + materials yet) +- Completed support of @extension{EXT,texture_integer}, + @extension{ARB,stencil_texturing}, @extension{ARB,texture_rectangle}, + @extension{ARB,texture_buffer_object}, @extension{ARB,texture_swizzle}, + @extension{EXT,texture_sRGB_decode} extensions (and related ES extensions) and + other missing parameters in @ref Texture "*Texture" classes +- Basic support for @extension{ARB,texture_multisample} and + @extension{ARB,texture_storage_multisample} in new @ref MultisampleTexture + class +- Instanced rendering, base vertex and base instance specification in + @ref Mesh and @ref MeshView classes; @ref Mesh::addVertexBufferInstanced() + function for adding buffers with per-instance data (see + [mosra/magnum#47](https://github.com/mosra/magnum/issues/47)) +- Mesh multi-draw using @ref MeshView::draw() +- Initial @extension{ARB,multi_bind} support with @ref AbstractTexture::bind() +- Support for @extension{ARB,vertex_type_10f_11f_11f_rev} in + @cpp AbstractShaderProgram::Attribute::DataType @ce +- New variants of @ref Shader::compile() and @ref AbstractShaderProgram::link(), + allowing the driver to perform paralell compilation in multiple threads. +- Added @ref Texture::maxSize() "*Texture::maxSize()" queries +- @ref MeshTools::compile() for automagic creation of 2D and 3D meshes from + imported data +- @ref MeshTools::interleaveInto() for interleaving data into existing + buffer +- @ref Shapes::Shape::collision() function as complement to + @ref Shapes::Shape::collides() +- @ref Platform::GlutApplication::KeyEvent finally has more complete key + support +- @ref Math::Range::data() function, useful when querying range values from + GL +- Support for specifying context flags using + @ref Platform::Sdl2Application::Configuration::setFlags() "Platform::*Application::Configuration::setFlags()", + they are now also shown in @ref magnum-info +- More robust support for driver detection and driver bug workarounds. Driver + can be detected using @ref Context::detectedDriver(), problematic + extension disabled, which is then shown in @ref magnum-info and can be + also queried using @ref Context::isExtensionDisabled() +- @ref Context::extensionStrings() for getting list of all extension + strings exposed by the driver +- @ref Context::resetState() for resetting internal state tracker, allowing + to use Magnum along with third-party OpenGL code (see + [mosra/magnum#48](https://github.com/mosra/magnum/issues/48)) +- @ref MAGNUM_TARGET_WEBGL CMake and preprocessor variable + +@subsection changelog-2014-06-changes 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](https://github.com/mosra/magnum/issues/20), + [mosra/magnum#45](https://github.com/mosra/magnum/issues/18)) +- @ref Platform::Sdl2Application is now used everywhere (documentation, + tutorials, examples) by default, replacing @ref Platform::GlutApplication. + The GLUT application is still available, though. See + [mosra/magnum#39](https://github.com/mosra/magnum/issues/39). +- The need for compiler compatibility mode is now automatically detected by + CMake to avoid strange compilation errors later +- Split out @ref Texture functionality into dedicated @ref TextureArray, + @ref MultisampleTexture and @ref RectangleTexture classes to make their + usage less error-prone +- @ref Buffer::invalidateData(), @ref Buffer::invalidateSubData() and + @ref Renderer::resetNotificationStrategy() functions are enabled on + OpenGL ES as a no-op +- Added @ref std::vector overload of @ref MeshTools::combineIndexArrays() + for greater runtime-usage flexibility +- @ref Platform::Sdl2Application now defaults to non-resizable window, you + can change the behavior using @ref 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 + +@subsection changelog-2014-06-buildsystem Build system + +- Avoiding unnecessary linking of the OpenGL library (see + [mosra/magnum#60](https://github.com/mosra/magnum/pull/60)) + +@subsection changelog-2014-06-bugfixes 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](https://github.com/mosra/magnum/issues/56) +- Fixed various build issues on Mac OS X, see + [mosra/magnum#51](https://github.com/mosra/magnum/issues/51) and + [mosra/magnum#54](https://github.com/mosra/magnum/issues/54) + +@subsection changelog-2014-06-deprecated Deprecated APIs + +- @cpp Mesh::setVertexCount() @ce and @cpp Mesh::setIndexCount() @ce had + nonintuitive behavior in some corner cases and are deprecated, use general + @ref Mesh::setCount() function instead +- @cpp MeshView::setVertexRange() @ce and four-/two-argument + @cpp MeshView::setIndexRange() @ce are deprecated for similar reason as + above, use @ref MeshView::setCount(), @ref MeshView::setBaseVertex() + and three-/one-argument @ref MeshView::setIndexRange() instead +- @cpp Texture::Target @ce enum is deprecated as the API was too error-prone, + use dedicated @ref TextureArray, @ref MultisampleTexture and + @ref RectangleTexture classes instead +- @cpp Framebuffer::attachTexture*D() @ce is deprecated, use more generic + @ref Framebuffer::attachTexture() and + @ref Framebuffer::attachTextureLayer() instead +- @cpp FramebufferBlit::*Buffer @ce enum values are deprecated, use shorter + @ref FramebufferBlit::Color and similar instead +- @ref Audio::Source::play(), @ref SceneGraph::AbstractObject::setClean(), + @ref SceneGraph::AbstractObject::transformationMatrices() and similar + taking @ref std::initializer_list of pointers are deprecated, use versions + taking list of references instead +- @ref MeshTools::compressIndices() and @ref MeshTools::interleave() + which filled @ref Mesh and @ref 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 +- @ref MeshTools::combineIndexedArrays() taking @ref std::tuple is + deprecated, use version taking @ref std::pair instead +- @ref MeshTools::removeDuplicates() taking also list of indices is + deprecated, use the function in conjunction with @ref MeshTools::duplicate(). + See function documentation for more information. +- Parameter-less @ref Mesh::draw() and @ref MeshView::draw() are + deprecated, use versions with explicit shader parameter instead +- Deprecated implicit conversion of @ref Resource "Resource" to + @cpp U& @ce, as it is not safe. Use explicit dereference operator instead. +- Texture binding using @ref Texture::bind() "*Texture::bind()" is + deprecated, use setup functions of particular shaders instead (e.g. + @ref Shaders::Phong::setDiffuseTexture()) +- @cpp Context::Flag::Robustness @ce is deprecated, use + @ref Context::Flag::RobustAccess which reflects OpenGL naming better + instead +- @cpp Texture::maxLayers() @ce has misleading naming and is deprecated, use + @ref Shader::maxCombinedTextureImageUnits() instead + +@subsection changelog-2014-06-compatibility Potential compatibility breakages, removed APIs + +- All functionality @ref changelog-2013-10-deprecated "deprecated in 2013.10" + has been removed, namely: + - Removed deprecated raw-pointer versions of @ref Buffer::setData() and + @ref Buffer::setSubData(), use overloads taking + @cpp Containers::ArrayReference @ce instead + - Removed deprecated `Magnum/ImageFormat.h` header and + @cpp ImageFormat @ce/@cpp ImageType @ce enums, use @ref Magnum/ColorFormat.h + header and @ref ColorFormat/@ref ColorType enums instead + - Removed deprecated @cpp Matrix2 @ce and @cpp Matrix2d @ce typedefs, use + :ref:`Matrix2x2` and :ref:`Matrix2x2d` instead + - Removed deprecated `Magnum/Swizzle.h` header and @cpp Magnum::swizzle() @ce + function, use @ref Magnum/Math/Swizzle.h and @ref Math::swizzle() + instead + - Removed deprecated @cpp *::maxSupported*() @ce limit queries, use the + less verbose @cpp *::max*() @ce versions instead + - Removed deprecated @cpp Platform::*Application::InputEvent::Modifier::*Button @ce + enum values, use @ref Platform::Sdl2Application::MouseMoveEvent::buttons() "Platform::*Application::*Event::buttons()" + function and @ref Platform::Sdl2Application::MouseMoveEvent::Button "Platform::*Application::*Event::Button" + enum instead + - @cpp Platform::Sdl2Application::Configuration::Flag @ce enum and related + functions were replaced with WindowFlag, as the name would now conflict + with context flags + +@subsection changelog-2014-06-internal Internal changes + +- Removed last remaining bits of global state, everything is now stored + per-context. + +@section changelog-2014-01 2014.01 + +Released 2014-01-21, tagged as +[v2014.01](https://github.com/mosra/magnum/releases/tag/v2014.01). See the +[release announcement](http://blog.magnum.graphics/announcements/january-2014-updates/) +for a high-level overview. + +@subsection changelog-2014-01-dependencies Dependency changes + +No dependency changes in this release. + +@subsection changelog-2014-01-new 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 @ref Text::MagnumFont "MagnumFont", + @ref Text::MagnumFontConverter "MagnumFontConverter", + @ref Trade::TgaImporter "TgaImporter", @ref Trade::TgaImageConverter "TgaImageConverter" + and @ref Audio::WavImporter "WavAudioImporter" plugins. +- Documented @ref opengl-support "state of OpenGL support", + @ref opengl-mapping "mapping between OpenGL and Magnum API", + @ref plugins "general plugin usage" and added + @ref troubleshooting "troubleshooting page" for most common building and + rendering issues +- Support for horizontal and vertical text alignment and multi-line text in + @ref Text::Renderer (line wrapping is still left up to the user) +- New @ref magnum-fontconverter 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 + (@extension{KHR,debug}, @extension{EXT,debug_label} and @extension{EXT,debug_marker} + extensions) (see [mosra/magnum#42](https://github.com/mosra/magnum/issues/42)) +- @ref Platform::BasicScreenedApplication "Platform::ScreenedApplication" + class allowing the users to easily use multiple independent screens in the + application. +- New 1D, 2D and 3D @ref Math::Range class +- Added @cpp red() @ce, @cpp green() @ce, @cpp blue() @ce, @cpp cyan() @ce, + @cpp magenta() @ce and @cpp yellow() @ce convenience functions to @ref Color3 + and @ref Color4 classes +- Convenience @ref Color3ub and @ref Color4ub typedefs +- New @ref version() utility functions for converting @ref Version enum + value to major/minor version number and back +- Added @cpp release() @ce function to @ref Image and @ref Trade::ImageData + for releasing ownership of the data, similar to @ref std::unique_ptr::release() + (see [mosra/magnum#29](https://github.com/mosra/magnum/issues/29)) +- @cpp *Image::dataSize() @ce function for computing size of buffer required + to store image of given size +- Disallowing conversion of rvalue @ref Image and @ref Trade::ImageData + to ImageReference as it would result in access to deleted memory (GCC + 4.8.1/Clang only) +- No-op fallback for @ref Texture::setMaxAnisotropy() "*Texture::setMaxAnisotropy()" + in case @extension{EXT,texture_filter_anisotropic extension} is not supported +- Added @cpp round() @ce, @cpp floor() @ce and @cpp ceil() @ce scalar/vector + functions to @ref Math namespace +- @ref Math::minmax() and @ref Math::Vector2::minmax() functions +- Modulo operations for integral @ref Math::Vector classes +- Ability to request context version in all windowed + @ref Platform::Sdl2Application "Platform::*Application" classes +- Mouse wheel support in @cpp Platform::NaClApplication::MouseEvent @ce +- No-op @ref Platform::GlutApplication::keyReleaseEvent() and + @cpp Platform::NaClApplication::Configuration::setTitle() @ce functions to + preserve source compatibility with other application classes. +- @ref SceneGraph::Drawable::drawables() function as a non-ambiguous + alternative to @cpp group() @ce +- Ability to specify background color color in @ref Shaders::Vector, + allowing it to use without blending enabled (fully transparent black was + used previously) +- New @ref Shaders::Generic class with common definitions, so you can + configure mesh for the generic shader and render it with any other + compatible shader +- Convenience @cpp hasNormals() @ce, @cpp hasTextureCoords2D() @ce functions to + @ref Trade::MeshData2D and @ref 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 + @ref Magnum::Extensions) +- All classes in documentation are now shown with corresponding @cpp #include @ce + path + +@subsection changelog-2014-01-changes Changes + +- Preferring absolute includes instead of relative (see [mosra/magnum#36](https://github.com/mosra/magnum/issues/36)) +- The `magnum-distancefield` utility is now named @ref magnum-distancefieldconverter + for consistency with other command-line utilities +- @ref 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 @ref Buffer::data() and made + @ref Image::data() "*Image::data()" templated to have them consistent. + Note that this is source-compatible change. +- @cpp Query::result() @ce returns @cpp true @ce if value is nonzero + (was returning @cpp true @ce only for value of 1 previously) +- All functions in @ref MeshTools namespace are now returning either + @ref Corrade::Containers::Array or @ref std::unique_ptr instead of naked + pointers to avoid accidental out-of-bounds access and memory leaks +- All functions in @ref Text namespace are now returning @ref std::unique_ptr + instead of naked pointers to avoid accidental memory leaks +- Implementation of @ref Platform::Sdl2Application::viewportEvent() "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 @ref Shaders::Flat now multiplies texture with the specified + color instead of ignoring it. See also [mosra/magnum#34](https://github.com/mosra/magnum/issues/34) +- All deprecated functions and types are now emitting compiler warnings to + encourage updating the code +- Various documentation and example updates and improvements + +@subsection changelog-2014-01-bugfixes Bug fixes + +- Fixed @ref CubeMapTextureArray::image() function (more precisely it + wasn't working at all). See also [mosra/magnum#31](https://github.com/mosra/magnum/issues/31). +- Fixed wrong assertion in @ref Texture::setWrapping() for rectangle + textures +- Fixed wrong assertion in @cpp AbstractImage::pixelSize() @ce when computing + size of separate depth and stencil formats +- @ref Mesh::addVertexBuffer() now properly computes offsets for matrix + attributes +- Taking index buffer offset into account in @ref MeshView class +- Fixed various issues with textured @ref Shaders::Flat shader (actually + the textured version was not working at all) +- Various OS X-related fixes in @ref Shaders library. See also + [mosra/magnum#27](https://github.com/mosra/magnum/issues/27). +- Fixed building issues when both SDL1 and SDL2 is installed on OS X. See + also [mosra/magnum#25](https://github.com/mosra/magnum/issues/25), + [mosra/magnum#38](https://github.com/mosra/magnum/pull/38). +- Fixed building issues with CMake-generated XCode project on OS X. See also + [mosra/magnum#37](https://github.com/mosra/magnum/issues/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](https://github.com/mosra/magnum/issues/26), + [mosra/magnum#35](https://github.com/mosra/magnum/issues/35) and + [mosra/magnum#43](https://github.com/mosra/magnum/pull/43). +- Fixed compilation issues with Clang and libc++ +- Fixed various compilation issues under MSVC (and worked around an insane + amount of compiler bugs) + +@subsection changelog-2014-01-deprecated Deprecated APIs + +- @cpp Buffer::Usage @ce enum is deprecated to reduce header dependencies, use + global @ref BufferUsage enum instead +- @cpp Mesh::Primitive @ce enum is deprecated to reduce header dependencies, + use global @ref MeshPrimitive enum instead +- @cpp Sampler::maxAnisotropy() @ce is deprecated to avoid naming conflict with + @ref Texture::setMaxAnisotropy() "*Texture::setMaxAnisotropy()", use + @ref Sampler::maxMaxAnisotropy() instead +- @cpp Magnum::Geometry::Rectangle @ce class (and @cpp Rectangle* @ce typedefs) + is deprecated, use more generic and feature-rich @ref Math::Range + instead. +- @cpp Platform::Sdl2Application::Configuration::setFlags() @ce function and + related enum is deprecated to avoid naming conflict in the future, use @ref Platform::Sdl2Application::Configuration::setWindowFlags() instead +- @cpp SceneGraph::Animable::group() @ce is deprecated, use non-ambiguous + @ref SceneGraph::Animable::animables() instead +- `Magnum/Shaders/magnumShadersResourceImport.hpp` header is deprecated in + favor of less verbose `Magnum/Shaders/resourceImport.hpp` +- @cpp Text::TextRenderer @ce class (and @cpp Text::TextRenderer2D @ce, + @cpp Text::TextRenderer3D @ce typedefs) is deprecated, use less redundant + name @ref Text::Renderer instead + +@subsection changelog-2014-01-compatibility Potential compatibility breakages, removed APIs + +- Removed @cpp SceneGraph::*Transformation::move() @ce from 2D transformation + classes. It was originally meant for modifying draw order, but as the draw + order is managed by @ref SceneGraph::DrawableGroup class and not by + parent object, this function is essentially useless. + +@subsection changelog-2014-01-documentation Documentation + +- Various documentation updates and fixes (see + [mosra/magnum#28](https://github.com/mosra/magnum/issues/28)) + +@subsection changelog-2014-01-internal 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) + +@section changelog-2013-10 2013.10 + +Released 2013-10-30, tagged as +[v2013.10](https://github.com/mosra/magnum/releases/tag/v2013.10). See the +[release announcement](http://blog.magnum.graphics/announcements/october-2013-updates/) +for a high-level overview. + +@subsection changelog-2013-10-dependencies Dependency changes + +- Removed GLEW dependency in favor of built-in `glLoadGen`, resulting in + greatly reduced compilation time and less compatibility issues. The base + library thus now depends only on Corrade and OpenGL libraries. See + [mosra/magnum#11](https://github.com/mosra/magnum/issues/11), + [mosra/magnum#16](https://github.com/mosra/magnum/issues/16), + [mosra/magnum#21](https://github.com/mosra/magnum/issues/21), + [mosra/magnum#22](https://github.com/mosra/magnum/issues/22), + [mosra/magnum#23](https://github.com/mosra/magnum/pull/23). + +@subsection changelog-2013-10-new New features + +- Initial Emscripten (HTML5/WebGL) port. See @ref Platform::Sdl2Application + for detailed porting information. The @ref example-index "examples page" + has now links to online Emscripten demos, see also + [base-emscripten](https://github.com/mosra/magnum-bootstrap/tree/base-emscripten) + branch in Magnum Bootstrap. +- Mac OS X port (thanks to Miguel Martin) +- @ref Math::Vector::isZero() and @ref Math::Vector2::aspectRatio() + convenience functions +- Bitwise AND, OR, XOR, bit inversion and bit shift in integral + @ref Math::Vector classes +- @ref Math::Matrix4x3 "Math::MatrixMxN" and + @ref Math::Matrix3x3 "Math::MatrixNxN" template aliases for non-square + and non-transforming square matrices in @ref Math namespace, + @ref Matrix3x2 "MatrixNxN" and @ref Matrix2x2d "MatrixNxNd" typedefs for + @cpp float @ce and @cpp double @ce non-transforming square matrices in root + Magnum namespace. Note that template aliases are not present in GCC 4.6 + builds. +- Limit queries for all OpenGL objects, the information is now printed also + by @ref magnum-info utility. +- @ref Context::isExtensionSupported() is now able to query extension + availability on particular GLSL version +- Using @ref std::unique_ptr and C++1y @cpp std::optional @ce for resources + returned from @ref Trade::AbstractImporter for better usability and to + avoid accidental memory leaks +- New translation-only transformation in @ref SceneGraph supporting also + purely integral coordinates, useful e.g. for UI or 2D platformers. +- Detailed collision queries and new @ref Shapes::InvertedSphere "InvertedSphere" + shape in Shapes library +- Texture support in @ref Shaders::Flat +- Mouse button queries in @ref Platform::Sdl2Application::MouseMoveEvent "Platform::*Application::MouseMoveEvent" -@section changelog-2015-05 2015-05 snapshot +@subsection changelog-2013-10-changes Changes -See the [release notes and full changelog](http://blog.magnum.graphics/announcements/may-2015-updates/#magnum). +- @ref Buffer::setData() and @ref Buffer::setSubData() are now accepting + @ref Containers::ArrayReference for more convenient usage +- @ref Platform::Sdl2Application::viewportEvent() "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 @ref Math::RectangularMatrix "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 -@section changelog-2014-06 2014-06 snapshot +@subsection changelog-2013-10-bugfixes Bug fixes -See the [release notes and full changelog](http://blog.magnum.graphics/announcements/june-2014-updates/#magnum). +- Fixed compilation with Clang and libc++ (see + [mosra/magnum#12](https://github.com/mosra/magnum/issues/12)) +- Fixes compilation of the Audio library on macOS (see + [mosra/magnum#19](https://github.com/mosra/magnum/issues/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](https://github.com/mosra/magnum/issues/17)) +- Extension support queries depend on selected GLSL version (see + [mosra/magnum-examples#3](https://github.com/mosra/magnum-examples/issues/3)) -@section changelog-2014-01 2014-01 snapshot +@subsection changelog-2013-10-deprecated Deprecated APIs -See the [release notes and full changelog](http://blog.magnum.graphics/announcements/january-2014-updates/#magnum). +- @cpp Matrix2 @ce and @cpp Matrix2d @ce is deprecated, use @ref Matrix2x2 + and @ref Matrix2x2d instead +- @cpp swizzle() @ce is deprecated, all of its functionality has been moved + into @ref Math::swizzle() +- @cpp Buffer::setData() @ce and @cpp Buffer::setSubData() @ce overloads + taking pair of data pointer and size are deprecated, use + @cpp Containers::ArrayReference @ce-based @ref Buffer::setData() and + @ref Buffer::setSubData() +- `ImageFormat.h` header, @cpp ImageFormat @ce and @cpp ImageType @ce enums + are deprecated, use `ColorFormat.h` header, `ColorFormat` and `ColorType` + enums which reflect OpenGL naming better instead +- @cpp Platform::*Application::InputEvent::Modifier::*Button @ce enum values + are deprecated, use + @ref Platform::Sdl2Application::MouseMoveEvent::buttons() "Platform::*Application::*Event::buttons()" + and @ref Platform::Sdl2Application::MouseMoveEvent::Button "Platform::*Application::*Event::Button" + enum instead +- @cpp AbstractShaderProgram::maxSupportedVertexAttributeCount() @ce, + @cpp AbstractTexture::maxSupportedLayerCount() @ce and + @cpp Sampler::maxSupportedAnisotropy() @ce are deprecated in favor of less + verbose @ref AbstractShaderProgram::maxVertexAttributes(), + @cpp AbstractTexture::maxLayers() @ce and @cpp Sampler::maxAnisotropy() @ce -@section changelog-2013-10 2013-10 snapshot +@subsection changelog-2013-10-compatibility Potential compatibility breakages, removed APIs -See the [release notes and full changelog](http://blog.magnum.graphics/announcements/october-2013-updates/#magnum). +No deprecated API was removed in this release. -@section changelog-initial Initial release +@section changelog-2013-08 2013.08 -See the [Magnum project announcement](http://blog.magnum.graphics/announcements/introducing-magnum/). +Released 2013-08-30, tagged as +[v2013.08](https://github.com/mosra/magnum/releases/tag/v2013.08). See the +[project announcement](http://blog.magnum.graphics/announcements/introducing-magnum/) +for a high-level overview. */