|
|
|
|
/*
|
|
|
|
|
This file is part of Magnum.
|
|
|
|
|
|
|
|
|
|
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
|
|
|
|
|
Vladimír Vondruš <mosra@centrum.cz>
|
|
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
|
copy of this software and associated documentation files (the "Software"),
|
|
|
|
|
to deal in the Software without restriction, including without limitation
|
|
|
|
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
|
and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
|
Software is furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
|
|
|
in all copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
|
DEALINGS IN THE SOFTWARE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
namespace Magnum {
|
|
|
|
|
|
|
|
|
|
/** @page changelog Changelog
|
|
|
|
|
|
|
|
|
|
@tableofcontents
|
|
|
|
|
|
|
|
|
|
See also:
|
|
|
|
|
|
|
|
|
|
- @subpage changelog-plugins
|
|
|
|
|
- @subpage changelog-integration
|
|
|
|
|
- @subpage changelog-extras
|
|
|
|
|
- @subpage changelog-examples
|
|
|
|
|
|
|
|
|
|
@section changelog-latest Changes since 2015-05 snapshot
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-dependencies Dependency changes
|
|
|
|
|
|
|
|
|
|
- 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)
|
|
|
|
|
- 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
|
|
|
|
|
|
|
|
|
|
- MSVC 2015 and MSVC 2017 support in `master` branch
|
|
|
|
|
- ANGLE ES2/ES3 support, ability to create desktop GLES contexts on Windows
|
|
|
|
|
- Windows Phone/Store support via ANGLE
|
|
|
|
|
- iOS support
|
|
|
|
|
- WebAssembly support when building for Emscripten
|
|
|
|
|
- WebGL 2.0 support
|
|
|
|
|
- New OpenGL extension support:
|
|
|
|
|
- @extension{EXT,draw_buffers} ES2 extension
|
|
|
|
|
- @extension{EXT,sRGB_write_control} ES extension
|
|
|
|
|
- @extension{NV,polygon_mode} ES extension
|
|
|
|
|
- @extension{KHR,blend_equation_advanced},
|
|
|
|
|
@extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced}
|
|
|
|
|
desktop and ES extensions
|
|
|
|
|
- @extension{ANDROID,extension_pack_es31a} ES3 extension, which
|
|
|
|
|
includes:
|
|
|
|
|
- @extension{OES,texture_storage_multisample_2d_array}
|
|
|
|
|
- @extension{OES,texture_stencil8}
|
|
|
|
|
- @extension{EXT,texture_border_clamp}
|
|
|
|
|
- @extension{EXT,texture_cube_map_array}
|
|
|
|
|
- @extension{EXT,texture_buffer}
|
|
|
|
|
- @extension{EXT,geometry_shader}
|
|
|
|
|
- @extension{EXT,tessellation_shader}
|
|
|
|
|
- @extension{NV,shader_noperspective_interpolation} ES3 extension
|
|
|
|
|
- @extension{EXT,texture_compression_s3tc} desktop and ES extension,
|
|
|
|
|
@webgl_extension{WEBGL,compressed_texture_s3tc} WebGL extension
|
|
|
|
|
- @extension2{KHR,texture_compression_astc_ldr,KHR_texture_compression_astc_hdr},
|
|
|
|
|
@extension{KHR,texture_compression_astc_hdr} desktop and ES
|
|
|
|
|
extension
|
|
|
|
|
- @extension{EXT,unpack_subimage} and @extension{NV,pack_subimage}
|
|
|
|
|
ES2 extensions
|
|
|
|
|
- @extension{ARB,uniform_buffer_object} and its ES3/WebGL2
|
|
|
|
|
counterpart, except for data layout queries
|
|
|
|
|
- @extension{ARB,texture_barrier}
|
|
|
|
|
- @extension{ARB,shader_storage_buffer_object} and its ES3.1
|
|
|
|
|
counterpart
|
|
|
|
|
- @extension{ARB,compute_shader} and its ES3.1 counterpart
|
|
|
|
|
- @extension{ARB,shader_image_load_store} and its ES3.1 counterpart
|
|
|
|
|
- @extension{KHR,no_error} Desktop and ES extension
|
|
|
|
|
- @extension{EXT,shader_framebuffer_fetch}, @extension{ARM,shader_framebuffer_fetch}
|
|
|
|
|
and @extension{ARM,shader_framebuffer_fetch_depth_stencil} (partial
|
|
|
|
|
support)
|
|
|
|
|
- @extension{ARB,transform_feedback2},
|
|
|
|
|
@extension{ARB,transform_feedback3},
|
|
|
|
|
@extension{AMD,transform_feedback3_lines_triangles},
|
|
|
|
|
@extension{ARB,transform_feedback_overflow_query} desktop extension
|
|
|
|
|
and their ES3 counterparts, if applicable
|
|
|
|
|
- Compressed image support:
|
|
|
|
|
- Added @ref CompressedColorFormat enum, @ref CompressedImage,
|
|
|
|
|
@ref CompressedImageView and @ref CompressedBufferImage classes
|
|
|
|
|
- Added @ref Texture::setCompressedImage() "*Texture::setCompressedImage()",
|
|
|
|
|
@ref Texture::setCompressedSubImage() "*Texture::setCompressedSubImage()"
|
|
|
|
|
and @ref Texture::compressedImage() "Texture::compressedImage()"
|
|
|
|
|
functions
|
|
|
|
|
- Added @ref Renderer::Hint::TextureCompression enum value
|
|
|
|
|
- Ability to pass arguments to engine startup via
|
|
|
|
|
@ref Context "command-line and environment variables":
|
|
|
|
|
- The engine now prints what driver workarounds are enabled and gives the
|
|
|
|
|
user an ability to disable them via `--magnum-disable-workarounds`
|
|
|
|
|
- It's possible to disable OpenGL extensions to work around driver bugs
|
|
|
|
|
using `--magnum-disable-extensions`
|
|
|
|
|
- It's possible to control amount of log output on engine startup via
|
|
|
|
|
`--magnum-log`
|
|
|
|
|
- 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
|
|
|
|
|
- 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
|
|
|
|
|
@ref MAGNUM_BUILD_MULTITHREADED CMake variable and preprocessor define
|
|
|
|
|
- Added @ref Framebuffer::detach() as a conunterpart to all the
|
|
|
|
|
@ref Framebuffer::attachTexture() "attach*()" functions
|
|
|
|
|
- Added @ref Framebuffer::attachLayeredTexture() for layered texture
|
|
|
|
|
attachments
|
|
|
|
|
- Added @ref AbstractFramebuffer::clearDepth(), @ref AbstractFramebuffer::clearStencil(),
|
|
|
|
|
@ref AbstractFramebuffer::clearDepthStencil(), @ref DefaultFramebuffer::clearColor(),
|
|
|
|
|
@ref Framebuffer::clearColor()
|
|
|
|
|
- Added @ref BufferImage::release() "{Compressed,}BufferImage::release()" and
|
|
|
|
|
an ability to create @ref BufferImage "{Compressed,}BufferImage" from an
|
|
|
|
|
existing @ref Buffer
|
|
|
|
|
- New @ref Buffer::mapRead() convenience alternatives to @ref Buffer::map()
|
|
|
|
|
that return @cpp const @ce pointer and implicitly map as read-only
|
|
|
|
|
- Implemented @ref Renderer::setMemoryBarrier() and
|
|
|
|
|
@ref Renderer::setMemoryBarrierByRegion()
|
|
|
|
|
- Added @ref isVersionES() utility
|
|
|
|
|
- Added @ref Context::isCoreProfile()
|
|
|
|
|
- Added @ref TransformFeedback::maxVertexStreams() limit query
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-new-audio Audio library
|
|
|
|
|
|
|
|
|
|
- Ported to Emscripten
|
|
|
|
|
- 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(),
|
|
|
|
|
@ref Audio::Source::referenceDistance(), @ref Audio::Source::rolloffFactor(),
|
|
|
|
|
@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
|
|
|
|
|
- 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
|
|
|
|
|
- Added debug operator for @ref Audio::Renderer::DistanceModel
|
|
|
|
|
- Added @ref Audio::Playable, @ref Audio::Listener scene graph features and
|
|
|
|
|
@ref Audio::PlayableGroup feature group
|
|
|
|
|
- New namespace @ref Audio::Extensions for OpenAL extensions, similar to
|
|
|
|
|
@ref Extensions for OpenGL
|
|
|
|
|
- HRTF support through @ref Audio::Context::Configuration::setHrtf(),
|
|
|
|
|
@ref Audio::Context::isHrtfEnabled(), @ref Audio::Context::hrtfStatus()
|
|
|
|
|
- Floating-point audio support in @ref Audio::Buffer
|
|
|
|
|
- @ref Audio::WavImporter "WavAudioImporter" plugin now supports more
|
|
|
|
|
formats, is more flexible and gives better errors
|
|
|
|
|
- New @ref magnum-al-info "magnum-al-info" utility, available for all desktop
|
|
|
|
|
platforms and Emscripten
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-new-debugtools DebugTools library
|
|
|
|
|
|
|
|
|
|
- Added @ref DebugTools::bufferData(), @ref DebugTools::bufferSubData()
|
|
|
|
|
and @ref DebugTools::textureSubImage() debugging helpers to emulate missing
|
|
|
|
|
functionality on OpenGL ES
|
|
|
|
|
- New @ref DebugTools::CompareImage class for fuzzy image comparison in
|
|
|
|
|
@ref Corrade::TestSuite
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-new-math Math library
|
|
|
|
|
|
|
|
|
|
- New @ref Math::Bezier class for handling N-dimensional M-order Bézier
|
|
|
|
|
curves
|
|
|
|
|
- New @ref Math::Frustum class and @ref Math::Geometry::Intersection::pointFrustum(),
|
|
|
|
|
@ref Math::Geometry::Intersection::boxFrustum() functions
|
|
|
|
|
- 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(),
|
|
|
|
|
@ref Math::Color4::fromSrgbAlpha(), @ref Math::Color4::toSrgbAlpha()
|
|
|
|
|
- 8-bit and float RGB, RGBA, sRGB and sRGBA literals in @ref Math::Literals
|
|
|
|
|
namespace
|
|
|
|
|
- Added @ref Math::Color3::fromXyz() "Math::Color*::fromXyz()",
|
|
|
|
|
@ref Math::Color3::toXyz() "Math::Color*::toXyz()", @ref Math::xyYToXyz()
|
|
|
|
|
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
|
|
|
|
|
- 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
|
|
|
|
|
- Added @ref Math::pow(), @ref Math::log() and @ref Math::exp()
|
|
|
|
|
- Added @ref Math::Algorithms::qr(), @ref Math::Algorithms::gaussJordanInverted(),
|
|
|
|
|
@ref Math::Algorithms::kahanSum()
|
|
|
|
|
- Added @ref Math::Geometry::Distance::pointPlane(),
|
|
|
|
|
@ref Math::Geometry::Distance::pointPlaneScaled(),
|
|
|
|
|
@ref Math::Geometry::Distance::pointPlaneNormalized() functions
|
|
|
|
|
- Added @ref Math::Range::contains() and @ref Math::join() to join two ranges
|
|
|
|
|
- Ability to convert @ref Math::Complex, @ref Math::DualComplex,
|
|
|
|
|
@ref Math::Quaternion, @ref Math::DualQuaternion, @ref Math::Color3,
|
|
|
|
|
@ref Math::Color4 and @ref Math::Range classes from/to external
|
|
|
|
|
representation
|
|
|
|
|
- Ability to construct @ref Math::Dual, @ref Math::Complex and
|
|
|
|
|
@ref Math::Quaternion from a different underlying type
|
|
|
|
|
- Added @ref Math::ZeroInit, @ref Math::NoInit, @ref Math::IdentityInit tags
|
|
|
|
|
to control initialization of all math classes
|
|
|
|
|
- Added @ref Math::lerp(const Vector<size, T>&, const Vector<size, T>&, const BoolVector<size>&)
|
|
|
|
|
- Added @ref Math::Vector::flipped(), @ref Math::RectangularMatrix::flippedCols(),
|
|
|
|
|
@ref Math::RectangularMatrix::flippedRows()
|
|
|
|
|
- Added @ref Math::TypeTraits::name() and @ref Math::TypeTraits::equalsZero()
|
|
|
|
|
- Added @ref Math::RectangularMatrix::setRow()
|
|
|
|
|
- Ability to multiply and divide @ref Math::Dual with a real number
|
|
|
|
|
- Ability to access @ref Math::Dual members via reference
|
|
|
|
|
- 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
|
|
|
|
|
- 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
|
|
|
|
|
|
|
|
|
|
- New @ref Platform::GlfwApplication class
|
|
|
|
|
- Text input support in @ref Platform::Sdl2Application and
|
|
|
|
|
@ref Platform::GlfwApplication
|
|
|
|
|
- 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
|
|
|
|
|
- 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
|
|
|
|
|
- Added @ref Platform::Sdl2Application::MouseEvent::clickCount()
|
|
|
|
|
- Added @ref Platform::Sdl2Application::multiGestureEvent()
|
|
|
|
|
- Exposing key repeat in
|
|
|
|
|
@ref Platform::Sdl2Application::KeyEvent::isRepeated() "Platform::*Application::KeyEvent::isRepeated()"
|
|
|
|
|
- Added @ref Platform::Sdl2Application::setMinimalLoopPeriod(), which, along
|
|
|
|
|
with @ref Platform::Sdl2Application::setSwapInterval() replaces
|
|
|
|
|
@ref Timeline::setMinimalFrameTime()
|
|
|
|
|
- Added @ref Platform::Sdl2Application::window() and
|
|
|
|
|
@ref Platform::GlfwApplication::window() to access the underlying window
|
|
|
|
|
handle
|
|
|
|
|
- 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).
|
|
|
|
|
- Added @ref Platform::Sdl2Application::Configuration::setSRGBCapable()
|
|
|
|
|
- Added @ref Platform::Sdl2Application::Configuration::WindowFlag::Borderless
|
|
|
|
|
and @ref Platform::Sdl2Application::Configuration::WindowFlag::AllowHighDpi
|
|
|
|
|
for iOS and macOS
|
|
|
|
|
- Added @ref Platform::WindowlessGlxApplication::Configuration::setFlags() "Platform::Windowless*Application::Configuration::setFlags()" with
|
|
|
|
|
@ref Platform::WindowlessGlxApplication::Configuration::Flag::Debug "Flag::Debug"
|
|
|
|
|
- @ref magnum-info now accepts `--short` and `--extension-strings` options
|
|
|
|
|
- Added @ref Platform::Sdl2Application::windowSize(),
|
|
|
|
|
@ref Platform::GlfwApplication::windowSize()
|
|
|
|
|
- Extended @ref Platform::Sdl2Application::KeyEvent::Key to be consistent
|
|
|
|
|
with @ref Platform::GlfwApplication
|
|
|
|
|
- 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
|
|
|
|
|
- Added @ref Platform::Sdl2Application::KeyEvent::keyName() "Platform::*Application::KeyEvent::keyName()"
|
|
|
|
|
- It's now possible to iterate main loop manually using
|
|
|
|
|
@ref Platform::Sdl2Application::mainLoopIteration()
|
|
|
|
|
- Ability to pass command-line arguments to Emscripten browser apps, see
|
|
|
|
|
@ref Platform::Sdl2Application and @ref Platform::WindowlessEglApplication
|
|
|
|
|
for more information
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-new-primitives Primitives library
|
|
|
|
|
|
|
|
|
|
- New @ref Primitives::axis2D() and @ref Primitives::axis3D() primitives
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-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
|
|
|
|
|
|
|
|
|
|
- New @ref Text::AbstractFont::ascent() and @ref Text::AbstractFont::descent()
|
|
|
|
|
font properties
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-new-trade Trade library
|
|
|
|
|
|
|
|
|
|
- New @ref magnum-imageconverter "magnum-imageconverter" utility
|
|
|
|
|
- Initial implementation of @ref Trade::CameraData and @ref Trade::LightData
|
|
|
|
|
- Vertex color support in @ref Trade::MeshData2D and @ref Trade::MeshData3D
|
|
|
|
|
- @ref Trade::AbstractImageConverter member functions were changed to
|
|
|
|
|
non-@cpp const @ce to make implementation of complex converter plugins possible
|
|
|
|
|
- New @ref Trade::AbstractImageConverter::exportToCompressedImage() plugin
|
|
|
|
|
interface and @ref Trade::AbstractImageConverter::exportToData(),
|
|
|
|
|
@ref Trade::AbstractImageConverter::exportToFile() taking
|
|
|
|
|
@ref CompressedImageView as a parameter
|
|
|
|
|
- Providing access to plugin manager in @ref Trade::AbstractImporter,
|
|
|
|
|
@ref Trade::AbstractImageConverter and @ref Audio::AbstractImporter plugin
|
|
|
|
|
APIs now have access to the plugin manager in order to be able to load
|
|
|
|
|
other plugins
|
|
|
|
|
- @ref Trade::ImageData now handles both compressed and uncompressed
|
|
|
|
|
images, @ref Trade::AbstractImageConverter is able to take it and then
|
|
|
|
|
delegate to proper function based on whether the image is commpressed or
|
|
|
|
|
not
|
|
|
|
|
- @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()
|
|
|
|
|
- @ref magnum-distancefieldconverter "magnum-distancefieldconverter" now uses
|
|
|
|
|
@ref Trade::AnyImageConverter "AnyImageConverter" by default
|
|
|
|
|
- @ref Trade::TgaImporter "TgaImporter" sets proper @ref PixelStorage
|
|
|
|
|
alignment if rows are not four-byte aligned
|
|
|
|
|
- @ref Trade::TgaImageConverter "TgaImageConverter" now properly handles
|
|
|
|
|
@ref PixelStorage parameters
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-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
|
|
|
|
|
- The @ref Mesh class now stores a copy of @ref Buffer instance instead of
|
|
|
|
|
reference, meaning that you can move your buffers freely after assigning
|
|
|
|
|
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
|
|
|
|
|
- @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
|
|
|
|
|
- Ignoring `"No errors."` message produced by GLSL compiler/linker on Intel
|
|
|
|
|
Windows drivers.
|
|
|
|
|
- @ref Texture::image() "*Texture::image()" and @ref Framebuffer::read() "*Framebuffer::read()"
|
|
|
|
|
now reallocate image data only if needed, for both @ref Image and
|
|
|
|
|
@ref BufferImage types
|
|
|
|
|
- R-value @ref Image "Image*" no longer restricts conversion to
|
|
|
|
|
@ref ImageView as it is a valid use case (for example passing output from
|
|
|
|
|
@ref Framebuffer::read() directly to @ref Trade::AbstractImageConverter::exportToFile())
|
|
|
|
|
- It's no longer possible to call @ref Image::data() "Image*::data()" on
|
|
|
|
|
r-value instances as that would cause accessing freed data. Use
|
|
|
|
|
@ref Image::release() instead.
|
Buffer: deprecate templated overloads of data(), subData() and map().
They were utterly confusing, as it was completely unclear what the units
of offset/size parameters are, whether byte sizes or element counts (and
moreover, some of these APIs had offset in bytes and size in count and
some not). All of those are deprecated now, with hinting the user to
convert to non-templated APIs in combination with
Containers::arrayCast(). Moreover, the non-templated range map()
function doesn't return just void* anymore, but a properly sized
ArrayView<char>. The old map() (which doesn't take range) still returns
just a pointer (but also a char* instead of void* for consistency), as
getting size there is non-trivial (and impossible on old ES/WebGL).
The switch to ArrayView might be a source breaking change, but I
silently hope that everyone was just using the templated functions
anyway (that are deprecated now). So, in short, this was before:
T* a = buf.map<T>(0, size_in_what_i_have_no_idea);
And this is now, with proper size safety and clear API:
ArrayView<T> a = Containers::arrayCast<T>(buf.map(0, size_in_bytes);
The deprecated APIs will be removed at some point in the future, as
usual.
9 years ago
|
|
|
- @ref Buffer::map() now returns @ref Corrade::Containers::ArrayView instead
|
|
|
|
|
of a plain pointer for better security
|
|
|
|
|
- Graceful handling of broken GL contexts
|
|
|
|
|
- Behavior of @ref Version::GLES200 and upwards on desktop OpenGL is changed
|
|
|
|
|
to request an ES dialect of GLSL when used in @ref Shader (instead of a
|
|
|
|
|
particular desktop GL version that supports given ES version), looks for
|
|
|
|
|
@extension{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
|
|
|
|
|
@extension{ARB,vertex_array_object} disabled
|
|
|
|
|
- It's now possible to create @ref ImageView with @cpp nullptr @ce data (for
|
|
|
|
|
example for old-style texture allocation using @ref Texture::setImage())
|
|
|
|
|
- Various workarounds to make the engine working better on SVGA3D drivers
|
|
|
|
|
(VMWare guest)
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-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
|
|
|
|
|
- Default-constructed @ref Color4 has zero alpha now instead of fully opaque
|
|
|
|
|
black
|
|
|
|
|
- Proper implementation of @ref Math::Vector::isZero() for integers
|
|
|
|
|
- @ref Math::Matrix4::transformPoint() now properly uses the perspective
|
|
|
|
|
divide from projection matrices
|
|
|
|
|
- Updated @ref Math::TypeTraits fuzzy comparison epsilon values for
|
|
|
|
|
@cpp long double @ce and @cpp double @ce
|
|
|
|
|
- @ref Math::Matrix4::perspectiveProjection() now supports infinite far plane
|
|
|
|
|
- @ref Math::pow() now works for both vectors and scalars
|
|
|
|
|
- @ref Math::Vector::minmax() now works on arbitrary vectors instead of just
|
|
|
|
|
@ref Math::Vector2
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-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
|
|
|
|
|
drivers this causes the context to be stuck on OpenGL 3.1, in which case
|
|
|
|
|
the context is destroyed and old-style forward-compatible context is
|
|
|
|
|
requested instead.
|
|
|
|
|
- @ref Platform::Sdl2Application now leaves windows positioning on the system
|
|
|
|
|
instead of forcing the window to be centered
|
|
|
|
|
- @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
|
|
|
|
|
|
|
|
|
|
- @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
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-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 [coveralls.io](https://coveralls.io/github/mosra/magnum);
|
|
|
|
|
replacing the unmaintained and outdated Jenkins configuration
|
|
|
|
|
- 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.
|
|
|
|
|
- Reworked CMake buildsystem to use the new imported target workflow, see
|
|
|
|
|
@ref cmake for more information
|
|
|
|
|
- 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"
|
|
|
|
|
- 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
|
|
|
|
|
`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.
|
|
|
|
|
- `MACOSX_RPATH` is now enabled by default on CMake 3.0+
|
|
|
|
|
- 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
|
|
|
|
|
- Bundling a patched version of `FindOpenAL.cmake` to make it working on
|
|
|
|
|
Emscripten
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Wrapping mode for @ref CubeMapTexture is now correctly two-dimensional
|
|
|
|
|
instead of three-dimensional, wrapping mode for @ref Texture2DArray "TextureNDArray"
|
|
|
|
|
is now correctly N-dimensional instead of N+1
|
|
|
|
|
- Fixed WebGL context creation on Internet Explorer, it claims to have
|
|
|
|
|
version 0.94
|
|
|
|
|
- Fixed random browser-specific issues by avoiding the use of XHTML in
|
|
|
|
|
Emscripten builds
|
|
|
|
|
- @ref Trade::ObjImporter "ObjImporter" plugin now opens the files as binary
|
|
|
|
|
to avoid line ending issues
|
|
|
|
|
- Various compatibility updates to the @ref Shaders library
|
|
|
|
|
- Updates to OpenGL tests to work better on non-NVidia cards
|
|
|
|
|
- Various fixes for OpenGL object label queries on AMD drivers
|
|
|
|
|
- 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
|
|
|
|
|
- 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
|
|
|
|
|
- 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.
|
|
|
|
|
- @ref Platform::WindowlessWglApplication is fixed to allow the GL context to
|
|
|
|
|
be created and destroyed multiple times during application run
|
|
|
|
|
- @ref SceneGraph::Camera now works properly with @ref Double underlying type
|
|
|
|
|
- @ref Text::AbstractLayouter has now a virtual destructor to avoid leaking
|
|
|
|
|
its subclasses
|
|
|
|
|
- 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()
|
|
|
|
|
- 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 bad interaction of builtin OpenGL headers and Qt on macOS
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-deprecated Deprecated APIs
|
|
|
|
|
|
|
|
|
|
- `Timeline::setMinimalFrameTime()` is deprecated, use
|
|
|
|
|
@ref Platform::Sdl2Application::setSwapInterval() "Platform::*Application::setSwapInterval()"
|
|
|
|
|
and/or @ref Platform::Sdl2Application::setMinimalLoopPeriod() "Platform::*Application::setMinimalLoopPeriod()"
|
|
|
|
|
instead
|
|
|
|
|
- `SceneGraph::Camera2D::setProjection()`,
|
|
|
|
|
`SceneGraph::Camera3D::setOrthographic()` and
|
|
|
|
|
`SceneGraph::Camera3D::setPerspective()` are deprecated, use
|
|
|
|
|
@ref SceneGraph::Camera::setProjectionMatrix() in combination with
|
|
|
|
|
@ref Matrix3::projection(), @ref Matrix4::orthographicProjection() and
|
|
|
|
|
@ref Matrix4::perspectiveProjection() instead
|
|
|
|
|
- `SceneGraph::AbstractCamera`, `SceneGraph::AbstractBasicCamera2D`,
|
|
|
|
|
`SceneGraph::AbstractBasicCamera3D`, `SceneGraph::AbstractCamera2D` and
|
|
|
|
|
`SceneGraph::AbstractCamera3D` are deprecated, use @ref SceneGraph::Camera,
|
|
|
|
|
@ref SceneGraph::BasicCamera2D, @ref SceneGraph::BasicCamera3D,
|
|
|
|
|
@ref SceneGraph::Camera2D and @ref SceneGraph::Camera3D instead
|
|
|
|
|
- `Math::Matrix::IdentityType`, `Math::Matrix::ZeroType`,
|
|
|
|
|
`Math::Matrix::Identity` and `Math::Matrix::Zero` are deprecated, use the
|
|
|
|
|
new @ref Math::IdentityInit and @ref Math::ZeroInit tags instead
|
|
|
|
|
- `AbstractShaderProgram::setUniform(Int, UnsignedInt, const T*)` is
|
|
|
|
|
deprecated, use @ref AbstractShaderProgram::setUniform(Int, Containers::ArrayView<const Float>) "AbstractShaderProgram::setUniform(Int, Containers::ArrayView<const T>)"
|
|
|
|
|
instead
|
|
|
|
|
- `Magnum/ImageReference.h` header and `ImageReference` type is deprecated,
|
|
|
|
|
use @ref Magnum/ImageView.h and @ref ImageView instead
|
|
|
|
|
- `Magnum/Color.h` header and `BasicColor3` and `BasiColor4` types are
|
|
|
|
|
deprecated, use @ref Magnum/Math/Color.h, @ref Math::Color3 and
|
|
|
|
|
@ref Math::Color4 instead
|
|
|
|
|
- `Magnum/ColorFormat.h` header and `ColorFormat` and `ColorType` enums are
|
|
|
|
|
deprecated, use @ref Magnum/PixelFormat.h, @ref PixelFormat and @ref PixelType
|
|
|
|
|
instead
|
|
|
|
|
- @ref Image, @ref ImageView, @ref Trade::ImageData constructors, @ref Image::setData()
|
|
|
|
|
and @ref ImageView::setData() taking `void*` are deprecated, use
|
|
|
|
|
constructors and functions taking @ref Corrade::Containers::Array /
|
|
|
|
|
@ref Corrade::Containers::ArrayView instead
|
Buffer: deprecate templated overloads of data(), subData() and map().
They were utterly confusing, as it was completely unclear what the units
of offset/size parameters are, whether byte sizes or element counts (and
moreover, some of these APIs had offset in bytes and size in count and
some not). All of those are deprecated now, with hinting the user to
convert to non-templated APIs in combination with
Containers::arrayCast(). Moreover, the non-templated range map()
function doesn't return just void* anymore, but a properly sized
ArrayView<char>. The old map() (which doesn't take range) still returns
just a pointer (but also a char* instead of void* for consistency), as
getting size there is non-trivial (and impossible on old ES/WebGL).
The switch to ArrayView might be a source breaking change, but I
silently hope that everyone was just using the templated functions
anyway (that are deprecated now). So, in short, this was before:
T* a = buf.map<T>(0, size_in_what_i_have_no_idea);
And this is now, with proper size safety and clear API:
ArrayView<T> a = Containers::arrayCast<T>(buf.map(0, size_in_bytes);
The deprecated APIs will be removed at some point in the future, as
usual.
9 years ago
|
|
|
- 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
|
|
|
|
|
- @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()
|
|
|
|
|
to check for context presence.
|
|
|
|
|
- Angle literals available directly in the @ref Magnum namespace are
|
|
|
|
|
deprecated, import the @ref Math::Literals namespace instead
|
|
|
|
|
- `Platform::Sdl2Application::MouseEvent::Button::WheelUp`,
|
|
|
|
|
`Platform::Sdl2Application::MouseEvent::Button::WheelDown`,
|
|
|
|
|
`Platform::GlfwApplication::MouseEvent::Button::WheelUp` and
|
|
|
|
|
`Platform::GlfwApplication::MouseEvent::Button::WheelDown` mouse events are
|
|
|
|
|
deprecated, use @ref Platform::Sdl2Application::mouseScrollEvent() /
|
|
|
|
|
@ref Platform::GlfwApplication::mouseScrollEvent() and
|
|
|
|
|
@ref Platform::Sdl2Application::MouseScrollEvent /
|
|
|
|
|
@ref Platform::GlfwApplication::MouseScrollEvent instead
|
|
|
|
|
- @ref Platform::Sdl2Application::Sdl2Application() "Platform::*Application::*Application()"
|
|
|
|
|
and @ref Platform::WindowlessGlxApplication::WindowlessGlxApplication() "Platform::Windowless*Application::Windowless*Application()"
|
|
|
|
|
constructors taking @cpp nullptr @ce are deprecated, use constructors
|
|
|
|
|
taking @ref NoCreateT instead to create an application without creating
|
|
|
|
|
OpenGL context
|
|
|
|
|
- `Math::Color*::fromHSV()` and `Math::Color*::toHSV()` are deprecated, use
|
|
|
|
|
@ref Math::Color3::fromHsv() "Math::Color*::fromHsv()" and
|
|
|
|
|
@ref Math::Color3::toHsv() "Math::Color*::toHsv()" instead
|
|
|
|
|
- `Math::normalize()` and `Math::denormalize()` had confusing naming and thus
|
|
|
|
|
are deprecated, use @ref Math::pack() and @ref Math::unpack() from the
|
|
|
|
|
@ref Magnum/Math/Packing.h header instead
|
|
|
|
|
- @ref Trade::MeshData2D and @ref Trade::MeshData3D constructors without the
|
|
|
|
|
`colors` parameter are deprecated, use the full ones instead
|
|
|
|
|
- @ref Shaders::Generic::Color vertex attribute implicit constructor is
|
|
|
|
|
deprecated, use a constructor with explicit component count instead
|
|
|
|
|
- The bundled `std::optional` implementation was causing serious conflicts
|
|
|
|
|
with C++17 and it's now deprecated in favor of @ref Containers::Optional.
|
|
|
|
|
(Deprecated) aliases and conversion operators are provided for backwards
|
|
|
|
|
compatibility.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-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
|
|
|
|
|
otherwise it's fully source-compatible)
|
|
|
|
|
- Removed `Context::majorVersion()` and `Context::minorVersion()` functions,
|
|
|
|
|
use @ref Context::version() instead
|
|
|
|
|
- Removed deprecated `Magnum/DebugMarker.h` header, use
|
|
|
|
|
@ref Magnum/DebugOutput.h and @ref DebugMessage class instead
|
|
|
|
|
- Removed deprecated `*Buffer` values from @ref FramebufferBlit, use values
|
|
|
|
|
without the `Buffer` suffix
|
|
|
|
|
- Removed deprecated list-argument functions taking pointers from @ref Audio
|
|
|
|
|
and @ref SceneGraph libraries, use lists of references instead
|
|
|
|
|
- Removed deprecated texture unit enums from @ref Shaders library, use
|
|
|
|
|
dedicated texture setters instead
|
|
|
|
|
- Removed deprecated `*Texture::maxLayers()` functions, use
|
|
|
|
|
@ref Shader::maxCombinedTextureImageUnits() instead
|
|
|
|
|
- Removed deprecated @ref MeshTools::combineIndexedArrays(),
|
|
|
|
|
@ref MeshTools::compressIndices(), @ref MeshTools::interleave() and
|
|
|
|
|
@ref MeshTools::removeDuplicates() overloads, use the general ones instead
|
|
|
|
|
- Removed deprecated `Mesh*::set*{Range,Count}()` functions, use
|
|
|
|
|
@ref Mesh::setCount() "Mesh*::setCount()" and @ref MeshView::setIndexRange()
|
|
|
|
|
instead
|
|
|
|
|
- Removed deprecated parameterless @ref Mesh::draw() "Mesh*::draw()"
|
|
|
|
|
overload, use the one with explicit shader parameter instead
|
|
|
|
|
- Removed deprecated `Context::Flag::Robustness` enum value, use
|
|
|
|
|
@ref Context::Flag::RobustAccess instead
|
|
|
|
|
- Removed deprecated `Texture::Target` enum, use dedicated @ref Texture,
|
|
|
|
|
@ref TextureArray, @ref RectangleTexture and @ref MultisampleTexture
|
|
|
|
|
classes instead
|
|
|
|
|
- Removed deprecated @ref Resource conversion operator, use explicit
|
|
|
|
|
conversion instead
|
|
|
|
|
- Removed deprecated `Framebuffer::attachTexture*D()` overloads, use one of
|
|
|
|
|
@ref Framebuffer::attachTexture() or @ref 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 @ref Image "Image*" classes directly
|
|
|
|
|
- Removed `Image::dataSize()` function as it has ambiguous meaning in regards
|
|
|
|
|
to recently added features, use @ref Image::dataProperties() "Image::dataProperties()"
|
|
|
|
|
instead
|
|
|
|
|
- The `FindGLFW.cmake` now prefers absolute includes (i.e. `GLFW/glfw3.h`
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
- Reduced size of and number of allocations in @ref Mesh class.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-docs Documentation
|
|
|
|
|
|
|
|
|
|
- New documentation theme powered by [m.css](http://mcss.mosra.cz) and
|
|
|
|
|
related massive updates of *everything*
|
|
|
|
|
- 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
|
|
|
|
|
- Documented how to use Vcpkg packages
|
|
|
|
|
|
|
|
|
|
@section changelog-2015-05 2015-05 snapshot
|
|
|
|
|
|
|
|
|
|
See the [release notes and full changelog](http://blog.magnum.graphics/announcements/may-2015-updates/#magnum).
|
|
|
|
|
|
|
|
|
|
@section changelog-2014-06 2014-06 snapshot
|
|
|
|
|
|
|
|
|
|
See the [release notes and full changelog](http://blog.magnum.graphics/announcements/june-2014-updates/#magnum).
|
|
|
|
|
|
|
|
|
|
@section changelog-2014-01 2014-01 snapshot
|
|
|
|
|
|
|
|
|
|
See the [release notes and full changelog](http://blog.magnum.graphics/announcements/january-2014-updates/#magnum).
|
|
|
|
|
|
|
|
|
|
@section changelog-2013-10 2013-10 snapshot
|
|
|
|
|
|
|
|
|
|
See the [release notes and full changelog](http://blog.magnum.graphics/announcements/october-2013-updates/#magnum).
|
|
|
|
|
|
|
|
|
|
@section changelog-initial Initial release
|
|
|
|
|
|
|
|
|
|
See the [Magnum project announcement](http://blog.magnum.graphics/announcements/introducing-magnum/).
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|