mirror of https://github.com/mosra/magnum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1097 lines
63 KiB
1097 lines
63 KiB
/* |
|
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 "Plugins changelog" |
|
- @subpage changelog-integration "Integration changelog" |
|
- @subpage changelog-extras "Extras changelog" |
|
- @subpage changelog-examples "Examples changelog" |
|
|
|
@section changelog-latest Changes since 2018.02 |
|
|
|
@subsection changelog-latest-dependencies Dependency changes |
|
|
|
- Building for Android now requires CMake 3.7 with builtin Android |
|
crosscompilation support, the old toolchains were removed. Only the Clang |
|
and libc++ toolchain is now supported, support for GCC and libstdc++ was |
|
dropped, as it was still missing some important C++11 functionality. See |
|
@ref building-cross-android for more information. |
|
|
|
@subsection changelog-latest-new New features |
|
|
|
- New @ref PixelFormat / @ref CompressedPixelFormat enums containing generic |
|
API-independent pixel formats, together with @ref pixelSize(), |
|
@ref pixelFormatWrap() / @ref pixelFormatUnwrap(), |
|
@ref compressedPixelFormatWrap() / @ref compressedPixelFormatUnwrap() and @ref isPixelFormatImplementationSpecific() / |
|
@ref isCompressedPixelFormatImplementationSpecific() utilities now used by |
|
@ref Image / @ref CompressedImage and @ref ImageView / |
|
@ref CompressedImageView instead of the GL-specific formats |
|
- New @ref MeshPrimitive and @ref MeshIndexType enums containing generic |
|
API-independent mesh primitive types and index types, together with |
|
@ref meshIndexTypeSize() utilities |
|
- New @ref SamplerFilter, @ref SamplerMipmap and @ref SamplerWrapping enums |
|
containing generic API-independent texture sampler modes |
|
|
|
@subsubsection changelog-latest-new-math Math library |
|
|
|
- Added @ref Math::isInf(), @ref Math::isNan() |
|
|
|
@subsubsection changelog-latest-new-gl GL library |
|
|
|
- A new library that now contains wrappers for the OpenGL family of graphics |
|
APIs, separated from the core Magnum library |
|
- New @ref GL::hasPixelFormat(), @ref GL::pixelFormat(), @ref GL::pixelType(), |
|
@ref GL::hasCompressedPixelFormat(), @ref compressedPixelFormat() utilities |
|
for converting generic @ref PixelFormat / @ref CompressedPixelFormat to |
|
GL-specific @ref GL::PixelFormat, @ref GL::PixelType and |
|
@ref GL::CompressedPixelFormat values. The @ref BufferImage and |
|
@ref CompressedBufferImage classes now have overloads accepting both types. |
|
- New @ref GL::meshPrimitive() and @ref GL::meshIndexType() utilities for |
|
converting generic @ref MeshPrimitive and @ref MeshIndexType to GL-specific |
|
@ref GL::MeshPrimitive and @ref GL::MeshIndexType values. The @ref Mesh |
|
class now has overloads accepting both types. |
|
- New @ref Mesh::indexType() and @ref MeshView::mesh() getters |
|
- New @ref GL::samplerFilter(), @ref GL::samplerMipmap() and |
|
@ref GL::samplerWrapping() utilities for converting generic |
|
@ref SamplerFilter, @ref SamplerMipmap and @ref SamplerWrapping to G |
|
L-specific @ref GL::SamplerFilter, @ref GL::SamplerMipmap and |
|
@ref GL::SamplerWrapping values. All texture classes now have overloads |
|
accepting both types. |
|
- Initial support for OpenGL ES 3.2 and OpenGL 4.6 |
|
- New OpenGL extension support: |
|
- @extension{ARB,texture_filter_anisotropic} |
|
- @extension{OES,texture_float}, @extension2{OES,texture_half_float,OES_texture_float} |
|
- @extension{EXT,color_buffer_float}, |
|
@extension2{EXT,color_buffer_half_float,EXT_color_buffer_half_float} |
|
and |
|
their WebGL counterparts @webgl_extension{EXT,color_buffer_half_float}, |
|
@webgl_extension{WEBGL,color_buffer_float}, |
|
@webgl_extension{EXT,color_buffer_float} |
|
- Ported @ref OpenGLTester to WebGL |
|
|
|
@subsubsection changelog-latest-new-platform Platform libraries |
|
|
|
- Added @ref Platform::AndroidApplication::windowSize() |
|
- Added @ref Platform::AndroidApplication::nativeActivity() to access |
|
underlying `ANativeActivity` structure for calling various Android APIs |
|
|
|
@subsubsection changelog-latest-new-primitives Primitives library |
|
|
|
- New @ref Primitives::circle3DSolid(), @ref Primitives::circle3DWireframe(), |
|
@ref Primitives::coneSolid(), @ref Primitives::coneWireframe(), |
|
@ref Primitives::grid3DSolid() and @ref Primitives::grid3DWireframe() |
|
primitives |
|
|
|
@subsubsection changelog-latest-new-trade Trade library |
|
|
|
- Debug output operator for @ref Trade::PhongMaterialData::Flag and |
|
@ref Trade::PhongMaterialData::Flags |
|
|
|
@subsection changelog-latest-changes Changes and improvements |
|
|
|
- The @ref CompressedPixelStorage class and related APIs are now available |
|
on all targets including OpenGL ES and WebGL, however at the moment, until |
|
a compatibility code path is implemented, the @ref GL library expects that |
|
all parameters are at their defaults. |
|
|
|
@subsubsection changelog-latest-changes-gl GL library |
|
|
|
- The @ref GL::Mesh::indexTypeSize() and @ref GL::MeshView::setIndexRange() |
|
now expect that the mesh is indexed (instead of silently not doing |
|
anything) |
|
|
|
@subsection changelog-latest-buildsystem Build system |
|
|
|
- All plugin interfaces now implement |
|
@ref Corrade::PluginManager::AbstractPlugin::pluginSearchPaths() "pluginSearchPaths()" |
|
for plugin directory autodetection --- you no longer need to specify the |
|
plugin directory explicitly when loading plugins. See @ref plugins-loading |
|
for more information. |
|
- Plugins now provide an automatic means of static plugin import via CMake |
|
targets, no need to call @ref CORRADE_PLUGIN_IMPORT() implicitly anymore. |
|
For this to work, you just need to update local copies of all Find modules. |
|
See @ref plugins-static for more information. |
|
- The @ref Audio::AnyImporter "AnyAudioImporter", @ref Trade::AnyImageConverter "AnyImageConverter", |
|
@ref Trade::AnyImageImporter "AnyImageImporter" and @ref Trade::AnySceneImporter "AnySceneImporter" |
|
plugins were moved from the plugins repository to the core Magnum |
|
repository. If you are using them statically via CMake, you need to update |
|
your copies of `FindMagnum.cmake` and `FindMagnumPlugins.cmake` modules. |
|
See @ref building and @ref cmake for more information. |
|
- The @ref Trade namespace is now a separate library, allowing to use core |
|
Magnum functionality without @ref Corrade::PluginManager |
|
- Fixed the Debian package to not include a revision. While just a warning on |
|
Ubuntu, it's a hard error on Debian. |
|
|
|
@subsection changelog-latest-bugfixes Bug fixes |
|
|
|
- Engine startup info was not properly printed to Android log since |
|
introducing the `--magnum-log` option in version 2018.02 |
|
- Working around Emscripten issue where `-s USE_PTHREADS=1` would cause all |
|
shader sources containing Unicode characters to be truncated to empty |
|
strings. See the @cpp "emscripten-pthreads-broken-unicode-shader-sources" @ce |
|
workaround description for details. |
|
- @ref Attribute::DataType::HalfFloat was not available on WebGL 2 by mistake |
|
- A wrong code path for @ref Framebuffer::checkStatus() was selected on WebGL |
|
1 by mistake |
|
- Fixed `MAGNUM_PLUGINS_DIR` variables to contain proper absolute location by |
|
default again. |
|
|
|
@subsection changelog-latest-deprecated Deprecated APIs |
|
|
|
- All GL-related headers and APIs from the root @ref Magnum/ directory and |
|
@ref Magnum namespace were moved to @ref Magnum/GL directory and |
|
@ref Magnum::GL namespace. See their documentation for information about |
|
particular files, classes, enums, typedefs, values and functions. |
|
- The `MAGNUM_ASSERT_VERSION_SUPPORTED()`, `MAGNUM_ASSERT_EXTENSION_SUPPORTED()` |
|
and `MAGNUM_VERIFY_NO_ERROR()` macros are deprecated, use |
|
@ref MAGNUM_ASSERT_GL_VERSION_SUPPORTED(), |
|
@ref MAGNUM_ASSERT_GL_EXTENSION_SUPPORTED() and |
|
@ref MAGNUM_VERIFY_NO_GL_ERROR() instead |
|
- The `Platform::Context` class is deprecated, use @ref Platform::GLContext |
|
instead |
|
- The @ref PixelFormat and @ref CompressedPixelFormat enum now contains |
|
generic API-independent values. The GL-specific formats are present there, |
|
but marked as deprecated. Use either the generic values or |
|
@ref GL::PixelFormat (together with @ref GL::PixelType) and |
|
@ref GL::CompressedPixelFormat instead. |
|
- @ref PixelStorage::pixelSize() was deprecated, use @ref GL::pixelSize() |
|
or @ref Magnum::pixelSize() instead |
|
- `PixelStorage::dataProperties(GL::PixelFormat, GL::PixelSize, const Vector3i&)` |
|
was deprecated for being too GL-specific, use |
|
@ref PixelStorage::dataProperties(std::size_t, const Vector3i&) const |
|
together with @ref GL::pixelSize() instead |
|
- `Image*::type()` functions are deprecated as these are too GL-specific. The |
|
second format specifier is now available through @ref Image::formatExtra(), |
|
@ref ImageView::formatExtra() and @ref Trade::ImageData::formatExtra() |
|
- `Audio::Buffer::Format` is deprecated, use `Audio::BufferFormat` instead |
|
- `setData()` functions in the @ref Image and @ref CompressedImage classes |
|
are deprecated because they don't offer anything extra over simple |
|
move-assignment of a new instance. |
|
- The @ref MeshPrimitive enum now contains generic API-independent values. |
|
The additional GL-specific types are present there, but marked as |
|
deprecated. Use the GL-specific @ref GL::MeshPrimitive enum instead. |
|
- THe `GL::Mesh::IndexType` enum and the `Mesh::indexSize(MeshIndexType)` |
|
function is deprecated, use @ref Magnum::MeshIndexType / |
|
@ref GL::MeshIndexType and @ref meshIndexTypeSize() instead |
|
- The `GL::Mesh::indexSize()` function is deprecated, use |
|
@ref GL::Mesh::indexTypeSize() instead |
|
- The `Sampler` class and the `Sampler::Filter`, `Sampler::Mipmap`, |
|
`Sampler::Wrapping`, `Sampler::CompareMode`, `Sampler::CompareFunction` and |
|
`Sampler::DepthStencilMode` enums are deprecated, use @ref GL::Sampler, |
|
@ref SamplerFilter / @ref GL::SamplerFilter, @ref SamplerMipmap / |
|
@ref GL::SamplerMipmap, @ref SamplerWrapping / @ref GL::SamplerWrapping, |
|
@ref GL::SamplerCompareMode, @ref GL::SamplerCompareFunction and |
|
@ref GL::SamplerDepthStencilMode instead |
|
- Class @cpp Primitives::Capsule2D @ce and @cpp Primitives::Capsule3D @ce is |
|
deprecated, use @ref Primitives::capsule2DWireframe(), |
|
@ref Primitives::capsule3DSolid() and @ref Primitives::capsule3DWireframe() |
|
free functions instead |
|
- Class @cpp Primitives::Circle @ce is deprecated, use |
|
@ref Primitives::circle2DSolid() and @ref Primitives::circle2DWireframe() |
|
instead |
|
- Class @cpp Primitives::Crosshair2D @ce and @cpp Primitives::Crosshair3D @ce |
|
is deprecated, use @ref Primitives::crosshair2D() and |
|
@ref Primitives::crosshair3D() free function instead |
|
- Class @cpp Primitives::Cube @ce is deprecated, use @ref Primitives::cubeSolid(), |
|
@ref Primitives::cubeSolidStrip() and @ref Primitives::cubeWireframe() free |
|
functions instead |
|
- Class @cpp Primitives::Cylinder @ce is deprecated, use |
|
@ref Primitives::cylinderSolid(), @ref Primitives::cylinderWireframe() free |
|
functions instead |
|
- Class @cpp Primitives::Icosphere @ce is deprecated, use the |
|
@ref Primitives::icosphereSolid() free function instead |
|
- Class @cpp Primitives::Plane @ce is deprecated, use |
|
@ref Primitives::planeSolid() and @ref Primitives::planeWireframe() free |
|
functions instead |
|
- Class @cpp Primitives::Square @ce is deprecated, use |
|
@ref Primitives::squareSolid() and @ref Primitives::squareWireframe() free |
|
functions instead |
|
- Class @cpp Primitives::UVSphere @ce is deprecated, use |
|
@ref Primitives::uvSphereSolid() and @ref Primitives::uvSphereWireframe() |
|
free functions instead |
|
- @cpp Shaders::*Vector::setVectorTexture() @ce, @cpp Shaders::Flat::setTexture() @ce, |
|
@cpp Shaders::Phong::setAmbientTexture() @ce, @cpp Shaders::Phong::setDiffuseTexture() @ce, |
|
@cpp Shaders::Phong::setSpecularTexture() @ce and @cpp Shaders::Phong::setTextures() @ce |
|
are deprecated because texture binding (a global state) is confused there |
|
with uniform setup (a shader-local state). That can lead to accidental |
|
state mismatches where a texture is forgotten to be rebound. Use |
|
@ref Shaders::AbstractVector::bindVectorTexture() "Shaders::*Vector::bindVectorTexture()", |
|
@ref Shaders::Flat::bindTexture(), @ref Shaders::Phong::bindAmbientTexture(), |
|
@ref Shaders::Phong::bindDiffuseTexture(), @ref Shaders::Phong::bindSpecularTexture() |
|
and @ref Shaders::Phong::bindTextures() instead. |
|
|
|
@subsection changelog-latest-compatibility Potential compatibility breakages, removed APIs |
|
|
|
- Code that was previously linking just to the core @ref Magnum library may |
|
now need to explicitly link to the @ref Magnum::Trade and @ref Magnum::GL |
|
libraries as well. If using CMake, these dependencies might get linked in |
|
transitively from other libraries, but that doesn't handle all cases. Due |
|
to the complexity of this change, no backwards compatibility is provided. |
|
- The `magnum-info` utility was renamed to @ref magnum-gl-info. No backwards |
|
compatibility symlinks or aliases are provided. |
|
- @ref PixelStorage::dataProperties(), @ref Image::dataProperties(), |
|
@ref ImageView::dataProperties(), @ref Trade::ImageData::dataProperties(), and @ref GL::BufferImage::dataProperties() now return just a pair of two |
|
values, as the third value is now accessible directly through |
|
@ref Image::pixelSize() "*Image::pixelSize()" and no longer calculated |
|
on-demand |
|
- @ref CompressedPixelStorage::dataProperties(), |
|
@ref CompressedImage::dataProperties(), |
|
@ref CompressedImageView::dataProperties() and |
|
@ref GL::CompressedBufferImage::dataProperties() now return just a pair |
|
of two values, as the third value is accessible directly through |
|
@ref CompressedPixelStorage::compressedBlockDataSize() |
|
- @ref ImageView and @ref CompressedImageView methods are no longer |
|
@cpp constexpr @ce. It might be possible to have them @cpp constexpr @ce in |
|
C++14, but the resulting increase in maintenance costs and compile times is |
|
not worth it. |
|
- `PixelFormat` has been moved verbatim to @ref GL::PixelFormat and there's a |
|
new @ref Magnum::PixelFormat enum for generic pixel formats. It contains |
|
(deprecated) @ref GL::PixelFormat values for covering most of backwards |
|
compatibility, but code that relies on these two types being the same may |
|
break. In particular, @ref GL::BufferImage::format() now returns |
|
@ref GL::PixelFormat instead of @ref Magnum::PixelFormat, code depending on |
|
the return type being implicitly convertible to @ref Magnum::PixelFormat |
|
may break. In all other cases, @ref Image::format() "Image*::format()" |
|
returns @ref Magnum::PixelFormat. |
|
- `CompressedPixelFormat` has been moved verbatim to |
|
@ref GL::CompressedPixelFormat and there's a new |
|
@ref Magnum::CompressedPixelFormat enum for generic pixel formats. It |
|
contains (deprecated) @ref GL::CompressedPixelFormat values for covering |
|
most of backwards compatibility, but code that relies on these two types |
|
being the same may break. In particular, |
|
@ref GL::CompressedBufferImage::format() now returns |
|
@ref GL::CompressedPixelFormat instead of @ref Magnum::CompressedPixelFormat, |
|
code depending on the return type being implicitly convertible to |
|
@ref Magnum::CompressedPixelFormat may break. In all other cases, |
|
@ref CompressedImage::format() "CompressedImage*::format()" |
|
returns @ref Magnum::CompressedPixelFormat. |
|
- `MeshPrimitive` has been moved verbatim to @ref GL::MeshPrimitive and |
|
there's a new @ref Magnum::MeshPrimitive enum for generic primitive types. |
|
It contains (deprecated) additional @ref GL::MeshPrimitive values for |
|
covering most of backwards compatibility, but code that relies on these |
|
two types being the same (or have values that match GL enums) may break. |
|
In particular, @ref GL::Mesh::primitive() now returns |
|
@ref GL::MeshPrimitive instead of @ref Magnum::MeshPrimitive, code |
|
depending on the return type being implicitly convertible to |
|
@ref Magnum::MeshPrimitive may break. IN all other cases, |
|
@ref Trade::MeshData2D::primitive() "Trade::MeshData*D::primitive()" etc. |
|
returns @ref Magnum::MeshPrimitive. |
|
- Configuration value reader/writers are now for only |
|
@ref Magnum::MeshPrimitive and @ref Magnum::MeshIndexType, not for |
|
@ref GL::MeshPrimitive or @ref GL::MeshIndexType |
|
- The @ref Image::pixelSize(), @ref ImageView::pixelSize(), |
|
@ref Trade::ImageData::pixelSize() and @ref BufferImage::pixelSize() |
|
functions now return @ref UnsignedInt instead of @cpp std::size_t @ce. |
|
- Removed `PixelStorage::setSwapBytes()`, as every Magnum API dealing with |
|
images basically only asserted that it's not set. Use |
|
@ref Corrade::Utility::Endianness instead. |
|
- Removed the @cpp Buffer::Usage @ce enum that was deprecated in 2014.01, use |
|
the global @ref BufferUsage enum instead |
|
- Removed the `Magnum/Query.h` header that was deprecated in 2015.05, use one |
|
of @ref Magnum/PrimitiveQuery.h, @ref Magnum/SampleQuery.h or |
|
@ref Magnum/TimeQuery.h instead |
|
- Removed ability to use @ref Buffer::Target as constructor or |
|
@ref Buffer::setTargetHint() parameter that was deprecated in 2015.05, use |
|
@ref Buffer::TargetHint instead |
|
- Removed the @cpp SceneGraph::TransformationType @ce enum that was |
|
deprecated in 2015.05, use separate `<transform>()` and `<transform>Local()` |
|
variants instead |
|
- Removed @cpp SceneGraph::AbstractObject::hasFeatures() @ce, @cpp firstFeature() @ce, |
|
@cpp lastFeature() @ce, @cpp SceneGraph::Object::hasChildren() @ce, |
|
@cpp firstChild() @ce and @cpp lastChild() @ce that were deprecated in |
|
2015.05, use methods on linked list returned by |
|
@ref SceneGraph::AbstractObject::features() and |
|
@ref SceneGraph::Object::children() instead |
|
- Removed @cpp Platform::ScreenedApplication::frontScreen() @ce and |
|
@cpp Platform::ScreenedApplication::backScreen() @ce that were deprecated |
|
in 2015.05, use methods on linked list returned by |
|
@ref Platform::BasicScreenedApplication::screens() "Platform::ScreenedApplication::screens()" |
|
instead |
|
- Removed @ref Framebuffer::read() "*Framebuffer::read()" functions taking two |
|
vectors that was deprecated in 2015.05, use overload taking @ref Range2Di |
|
instead |
|
- Removed the @cpp Mesh::maxVertexAttributes() @ce function that was |
|
deprecated in 2015.05, use @ref AbstractShaderProgram::maxVertexAttributes() |
|
instead |
|
- Removed @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 that |
|
were deprecated in 2015.05, use @ref Math::dot(), @ref Math::angle(), |
|
@ref Math::lerp(), @ref Math::slerp() and @ref Math::cross() instead |
|
- Removed @cpp *Framebuffer::bind(FramebufferTarget) @ce function that was |
|
deprecated in 2%15.05, use parameter-less @ref Framebuffer::bind() "*Framebuffer::bind()" |
|
instead |
|
- Removed @cpp FramebufferTarget::ReadDraw @ce enum value that was deprecated |
|
in 2015.05, use separate @cpp FramebufferTarget::Read @ce and |
|
@cpp FramebufferTarget::Draw @ce values instead |
|
- Removed @ref CubeMapTexture::imageSize() with explicit face parameter that |
|
was deprecated in 2015.05, use overload that returns one value for all |
|
faces instead |
|
- Removed the `Magnum/DebugMessage.h` header that was deprecated in 2015.05, |
|
use @ref Magnum/DebugOutput.h instead |
|
- Removed the @cpp DebugMessage::Severity @ce enum that was deprecated in |
|
2015.05, use @ref DebugOutput::Severity instead |
|
- Removed @cpp DebugMessage::Callback @ce typedef, @cpp DebugMessage::setCallback() @ce |
|
and @cpp DebugMessage::setDefaultCallback() @ce function that were |
|
deprecated in 2015.05, use @ref DebugOutput::Callback, |
|
@ref DebugOutput::setCallback() and @ref DebugOutput::setDefaultCallback() |
|
instead |
|
- Removed @cpp DebugMessage::maxLoggedMessages() @ce and |
|
@cpp DebugMessage::maxMessageLength() @ce functions that were deprecated in |
|
2015.05, use @ref DebugOutput::maxLoggedMessages() and |
|
@ref DebugOutput::maxMessageLength() instead |
|
- Removed @cpp DebugMessage::setEnabled() @ce function and related values |
|
from @cpp DebugMessage::Source @ce enum that were deprecated in 2015.05, |
|
use @ref DebugOutput::setEnabled() along with @ref DebugOutput::Source, |
|
@ref DebugOutput::Type and @ref DebugOutput::Severity instead |
|
- Removed parameter-less @cpp *Query @ce constructor and parametrized |
|
@cpp *Query::begin() @ce function that were deprecated in 2015.05, use |
|
constructor with parameter and parameter-less @ref Query::begin() "*Query::begin()" |
|
instead |
|
- Removed `Timeline::setMinimalFrameTime()` that was deprecated since June |
|
2015, use @ref Platform::Sdl2Application::setSwapInterval() "Platform::*Application::setSwapInterval()" |
|
and/or @ref Platform::Sdl2Application::setMinimalLoopPeriod() "Platform::*Application::setMinimalLoopPeriod()" |
|
instead |
|
- Removed `SceneGraph::Camera2D::setProjection()`, |
|
`SceneGraph::Camera3D::setOrthographic()` and |
|
`SceneGraph::Camera3D::setPerspective()` that were deprecated since June |
|
2015, use @ref SceneGraph::Camera::setProjectionMatrix() in combination |
|
with @ref Matrix3::projection(), @ref Matrix4::orthographicProjection() and |
|
@ref Matrix4::perspectiveProjection() instead |
|
- Removed `SceneGraph::AbstractCamera`, `SceneGraph::AbstractBasicCamera2D`, |
|
`SceneGraph::AbstractBasicCamera3D`, `SceneGraph::AbstractCamera2D` and |
|
`SceneGraph::AbstractCamera3D` that were deprecated since June 2015, use |
|
@ref SceneGraph::Camera, @ref SceneGraph::BasicCamera2D, |
|
@ref SceneGraph::BasicCamera3D, @ref SceneGraph::Camera2D and |
|
@ref SceneGraph::Camera3D instead |
|
- Removed `Math::Matrix::IdentityType`, `Math::Matrix::ZeroType`, |
|
`Math::Matrix::Identity` and `Math::Matrix::Zero` that were deprecated |
|
since June 2015, use the @ref Math::IdentityInit and @ref Math::ZeroInit |
|
tags instead |
|
- Removed `Magnum/ImageReference.h` header and `ImageReference` type that |
|
were deprecated since July 2015, use @ref Magnum/ImageView.h and |
|
@ref ImageView instead |
|
- Removed `Magnum/Color.h` header and `BasicColor3` and `BasiColor4` types |
|
that were deprecated since August 2015, use @ref Magnum/Math/Color.h, |
|
@ref Math::Color3 and @ref Math::Color4 instead |
|
- Removed `Magnum/ColorFormat.h` header and `ColorFormat` and `ColorType` |
|
enums that were deprecated since August 2015, use |
|
@ref Magnum/PixelFormat.h, @ref PixelFormat and @ref PixelType instead |
|
- Removed @ref Image, @ref ImageView, @ref Trade::ImageData constructors, |
|
@ref Image::setData() and @ref ImageView::setData() taking `void*` that |
|
were deprecated since August 2015, use constructors and functions taking |
|
@ref Corrade::Containers::Array / @ref Corrade::Containers::ArrayView |
|
instead |
|
|
|
@subsection changelog-latest-docs Documentation |
|
|
|
- A new @ref developers page containing step-by-step checklists for |
|
maintainers and core developers |
|
- A new set of @ref platforms "platform-specific guides" containing extended |
|
information that was previously scattered across @ref Platform application |
|
class docs and elsewhere |
|
- Completely reworked @ref platforms-android "Android building" |
|
documentation, now using Gradle CMake integration instead of the outdated |
|
and no longer supported Apache Ant workflow. |
|
- The @ref Primitives namespace now has contains images visualizing how |
|
each primitive looks |
|
- Compiling majority of code snippets to ensure they don't get out of sync |
|
with the code |
|
|
|
@section changelog-2018-02 2018.02 |
|
|
|
Released 2018-02-15, tagged as |
|
[v2018.02](https://github.com/mosra/magnum/releases/tag/v2018.02). See the |
|
[release announcement](http://blog.magnum.graphics/announcements/2018.02/) for |
|
a high-level overview. |
|
|
|
@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-2018-02-new New features |
|
|
|
- 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 (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: |
|
- @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 |
|
(see [mosra/magnum#53](https://github.com/mosra/magnum/issues/53)) |
|
- Compressed image support: |
|
- Added @ref CompressedPixelFormat 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 (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 |
|
@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-2018-02-new-audio Audio library |
|
|
|
- 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(), |
|
@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 |
|
(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 (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 (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 (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 (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-2018-02-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-2018-02-new-math Math library |
|
|
|
- New @ref Math::Bezier class for handling N-dimensional M-order Bézier |
|
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 (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(), |
|
@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 (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 (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() |
|
- 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 (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-2018-02-new-platform Platform libraries |
|
|
|
- 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 (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 (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-gl-info "magnum-info" to Emscripten |
|
- First-class support for scroll events in |
|
@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 |
|
@cpp Timeline::setMinimalFrameTime() @ce |
|
- 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) (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 |
|
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-gl-info "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 (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() |
|
- Ability to pass command-line arguments to Emscripten browser apps, see |
|
@ref Platform::Sdl2Application and @ref Platform::WindowlessEglApplication |
|
for more information |
|
|
|
@subsubsection changelog-2018-02-new-primitives Primitives library |
|
|
|
- New @ref Primitives::axis2D() and @ref Primitives::axis3D() primitives |
|
|
|
@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-2018-02-new-text Text library |
|
|
|
- New @ref Text::AbstractFont::ascent() and @ref Text::AbstractFont::descent() |
|
font properties |
|
|
|
@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 |
|
- 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() (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 |
|
alignment if rows are not four-byte aligned |
|
- @ref Trade::TgaImageConverter "TgaImageConverter" now properly handles |
|
@ref PixelStorage parameters |
|
|
|
@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 |
|
- 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 (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 |
|
- Ignoring @cpp "No errors." @ce 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. |
|
- @ref Buffer::map() now returns @ref Corrade::Containers::ArrayView instead |
|
of a plain pointer for better security |
|
- Improved @ref Context::resetState() to better handle corner cases with VAOs |
|
- 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) |
|
- Various updates and code modernization (see |
|
[mosra/magnum#200](https://github.com/mosra/magnum/pull/200)) |
|
|
|
@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 |
|
- 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-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 |
|
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-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 (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-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 (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. 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 (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" (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 |
|
`MAGNUM_PLUGINS_DIR` CMake cache variable |
|
- Ability to override deploy directory (used for example by Emscripten) using |
|
a `MAGNUM_DEPLOY_PREFIX` CMake cache variable |
|
- Better handling of compiled-in resources in static build. You don't need to |
|
manually register resources when using Shaders library in static builds |
|
(see [mosra/magnum-examples#9](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-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" |
|
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 (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. |
|
- @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 |
|
- It's now possible to delete a running @ref SceneGraph::Animable |
|
- @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() (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() (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 (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-2018-02-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 |
|
- 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 (see |
|
[mosra/magnum#213](https://github.com/mosra/magnum/issues/213)) |
|
- `CubeMapTexture::Coordinate` enum is deprecated, use @ref CubeMapCoordinate |
|
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 Corrade::Containers::Optional. |
|
(Deprecated) aliases and conversion operators are provided for backwards |
|
compatibility. |
|
- `Audio::Context::hrtfSpecifier()` is deprecated, use |
|
@ref Audio::Context::hrtfSpecifierString() instead |
|
|
|
@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 |
|
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-2018-02-performance Performance improvements |
|
|
|
- Reduced size of and number of allocations in @ref Mesh class. |
|
|
|
@subsection changelog-2018-02-docs Documentation |
|
|
|
- New documentation theme powered by [m.css](http://mcss.mosra.cz) and |
|
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)) |
|
|
|
Changelogs for previous versions are available in @ref changelog-old. |
|
|
|
*/ |
|
|
|
}
|
|
|