|
|
|
|
/*
|
|
|
|
|
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
|
|
|
|
|
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- 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
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
|
|
|
|
|
@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
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- 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 GL::BufferImage and
|
|
|
|
|
@ref GL::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 GL::Mesh
|
|
|
|
|
class now has overloads accepting both types.
|
|
|
|
|
- New @ref GL::Mesh::indexType() and @ref GL::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 GL::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
|
|
|
|
|
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
@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-debugtools DebugTools library
|
|
|
|
|
|
|
|
|
|
- @ref DebugTools::textureSubImage() now accepts both GL-specific
|
|
|
|
|
@ref GL::PixelFormat / @ref GL::PixelType combination and the generic
|
|
|
|
|
@ref PixelFormat enum
|
|
|
|
|
- @ref DebugTools::CompareImage now accepts generic @ref PixelFormat on input
|
|
|
|
|
instead of GL-specific @ref GL::PixelFormat / @ref GL::PixelType
|
|
|
|
|
|
|
|
|
|
@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)
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-latest-changes-plugins Plugins
|
|
|
|
|
|
|
|
|
|
- @ref Trade::TgaImporter "TgaImporter" and
|
|
|
|
|
@ref Trade::TgaImageConverter "TgaImageConverter" plugins now operate on
|
|
|
|
|
the generic @ref PixelFormat instead of GL-specific @ref GL::PixelFormat /
|
|
|
|
|
@ref GL::PixelType
|
|
|
|
|
|
|
|
|
|
@subsection changelog-latest-buildsystem Build system
|
|
|
|
|
|
|
|
|
|
- The core @ref Magnum library is not depending on OpenGL anymore, all
|
|
|
|
|
GL-related APIs are now part of a new @ref GL library
|
|
|
|
|
- @ref Primitives and @ref Trade libraries do not depend on OpenGL anymore
|
|
|
|
|
- @ref DebugTools, @ref MeshTools and @ref TextureTools have only an optional
|
|
|
|
|
dependency on the @ref GL library, controlled with `TARGET_GL` CMake option
|
|
|
|
|
- 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 GL::Attribute::DataType::HalfFloat was not available on WebGL 2 by
|
|
|
|
|
mistake
|
|
|
|
|
- A wrong code path for @ref GL::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 `Magnum/` directory and
|
|
|
|
|
@ref Magnum namespace were moved to the `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 `Extensions::GL` namespace is deprecated, use @ref GL::Extensions
|
|
|
|
|
instead
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- 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.
|
|
|
|
|
- `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
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- `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()
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- @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
|
|
|
|
|
- @ref DebugTools::CompareImage no longer accepts GL-specific pixel formats,
|
|
|
|
|
only the non-deprecated values from the generic @ref PixelFormat enum
|
|
|
|
|
- The @ref Trade::TgaImageConverter "TgaImageConverter" plugin no longer
|
|
|
|
|
accepts GL-specific pixel formats, only the non-deprecated values from the
|
|
|
|
|
generic @ref PixelFormat enum
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
- The @ref Image::pixelSize(), @ref ImageView::pixelSize(),
|
|
|
|
|
@ref Trade::ImageData::pixelSize() and @ref GL::BufferImage::pixelSize()
|
Split the OpenGL layer out, pt 9: generic pixel formats.
This is quite big, so:
* There are new Magnum::PixelFormat and Magnum::CompressedPixelFormat
enums, which contain generic API-independent formats. In particular,
PixelFormat replaces GL::PixelFormat and GL::PixelType with a single
value.
* There's GL::pixelFormat(), GL::pixelType(),
GL::compressedPixelFormat() to convert the generic enums to
GL-specific. The mapping is only in one direction, done with a lookup
table (generic enums are indices to that table).
* GL classes taking the formats directly (such as GL::BufferImage) have
overloads that take both the GL-specific and generic format.
* The generic Image, CompressedImage, ImageView, CompressedImageView,
and Trade::ImageData classes now accept the generic formats
first-class. However, it's also possible to store an
implementation-specific value to cover cases where a generic format
enum doesn't have support for a particular format. This is done by
wrapping the value using pixelFormatWrap() or
compressedPixelFormatWrap(). Particular GPU APIs then assume it's
their implementation-specific value and extract the value back using
pixelFormatUnwrap() or compressedPixelFormatUnwrap(). There's also an
isPixelFormatImplementationSpecific() and
isCompressedPixelFormatImplementationSpecific() that distinguishes
these values.
* Many operations need pixel size and in order to have it even for
implementation-specific formats, a corresponding pixelSize()
overload is found via ADL on construction and the calculated size
stored along the format. Previously the pixel size was only
calculated on demand, but that's not possible now. In case such
overload is not available, it's possible to pass pixel size manually
as well.
* In order to support the GL format+type pair, Image, ImageView and
Trade::ImageData, there's now an additional untyped formatExtra()
field that holds the second value.
* The CompressedPixelStorage class is now unconditionally available on
all targets, including OpenGL ES and WebGL. However, on OpenGL ES the
GL APIs expect that it's all at default values.
I attempted to preserve backwards compatibility as much as possible:
* The PixelFormat and 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
GL::PixelFormat (togehter with GL::PixelType) and
GL::CompressedPixelFormat instead. There's a lot of ugliness caused
by this, but seems to work well.
* *Image::type() functions are deprecated as they were too
GL-specific. Use formatExtra() and cast it to GL::PixelType instead.
* Image constructors take templated format or format+extra arguments,
so passing GL-specific values to them should still work.
8 years ago
|
|
|
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 GL::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 GL::Buffer::Target as constructor or
|
|
|
|
|
@ref GL::Buffer::setTargetHint() parameter that was deprecated in 2015.05,
|
|
|
|
|
use @ref GL::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 GL::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 GL::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 GL::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/GL/DebugOutput.h instead
|
|
|
|
|
- Removed the @cpp DebugMessage::Severity @ce enum that was deprecated in
|
|
|
|
|
2015.05, use @ref GL::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 GL::DebugOutput::Callback,
|
|
|
|
|
@ref GL::DebugOutput::setCallback() and
|
|
|
|
|
@ref GL::DebugOutput::setDefaultCallback() instead
|
|
|
|
|
- Removed @cpp DebugMessage::maxLoggedMessages() @ce and
|
|
|
|
|
@cpp DebugMessage::maxMessageLength() @ce functions that were deprecated in
|
|
|
|
|
2015.05, use @ref GL::DebugOutput::maxLoggedMessages() and
|
|
|
|
|
@ref GL::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 GL::DebugOutput::setEnabled() along with @ref GL::DebugOutput::Source,
|
|
|
|
|
@ref GL::DebugOutput::Type and @ref GL::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 GL::SampleQuery::begin() "GL::*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/GL/PixelFormat.h, @ref GL::PixelFormat and @ref GL::PixelType
|
|
|
|
|
instead
|
|
|
|
|
- Removed @ref Image, @ref ImageView, @ref Trade::ImageData constructors,
|
|
|
|
|
`Image::setData()` and `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 GL::CompressedBufferImage "CompressedBufferImage" classes
|
|
|
|
|
- Added @ref GL::Texture::setCompressedImage() "*Texture::setCompressedImage()",
|
|
|
|
|
@ref GL::Texture::setCompressedSubImage() "*Texture::setCompressedSubImage()"
|
|
|
|
|
and @ref GL::Texture::compressedImage() "Texture::compressedImage()"
|
|
|
|
|
functions
|
|
|
|
|
- Added @ref GL::Renderer::Hint::TextureCompression "Renderer::Hint::TextureCompression"
|
|
|
|
|
enum value
|
|
|
|
|
- Ability to pass arguments to engine startup via
|
|
|
|
|
@ref GL::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 GL::OpenGLTester "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 GL::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 GL::Framebuffer::detach() "Framebuffer::detach()" as a
|
|
|
|
|
conunterpart to all the @ref GL::Framebuffer::attachTexture() "attach*()"
|
|
|
|
|
functions
|
|
|
|
|
- Added @ref GL::Framebuffer::attachLayeredTexture() "Framebuffer::attachLayeredTexture()"
|
|
|
|
|
for layered texture attachments
|
|
|
|
|
- Added @ref GL::AbstractFramebuffer::clearDepth() "AbstractFramebuffer::clearDepth()",
|
|
|
|
|
@ref GL::AbstractFramebuffer::clearStencil() "AbstractFramebuffer::clearStencil()",
|
|
|
|
|
@ref GL::AbstractFramebuffer::clearDepthStencil() "AbstractFramebuffer::clearStencil()",
|
|
|
|
|
@ref GL::DefaultFramebuffer::clearColor() "DefaultFramebuffer::clearColor()",
|
|
|
|
|
@ref GL::Framebuffer::clearColor() "Framebuffer::clearColor()"
|
|
|
|
|
- Added @ref GL::BufferImage::release() "{Compressed,}BufferImage::release()"
|
|
|
|
|
and an ability to create @ref GL::BufferImage "{Compressed,}BufferImage"
|
|
|
|
|
from an existing @ref GL::Buffer "Buffer"
|
|
|
|
|
- New @ref GL::Buffer::mapRead() "Buffer::mapRead()" convenience alternatives
|
|
|
|
|
to @ref GL::Buffer::map() "Buffer::map()" that return @cpp const @ce
|
|
|
|
|
pointer and implicitly map as read-only
|
|
|
|
|
- Implemented @ref GL::Renderer::setMemoryBarrier() "Renderer::setMemoryBarrier()"
|
|
|
|
|
and @ref GL::Renderer::setMemoryBarrierByRegion() "Renderer::setMemoryBarrierByRegion()"
|
|
|
|
|
- Added @ref GL::isVersionES() "isVersionES()" utility
|
|
|
|
|
- Added @ref GL::Context::isCoreProfile() "Context::isCoreProfile()"
|
|
|
|
|
- Added @ref GL::TransformFeedback::maxVertexStreams() "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 GL::Extensions "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::GLContext::tryCreate() "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 Shaders 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 GL::Mesh "Mesh" class now stores a copy of @ref GL::Buffer "Buffer"
|
|
|
|
|
instance instead of reference, meaning that you can move your buffers
|
|
|
|
|
freely after assigning them to a mesh
|
|
|
|
|
- @ref GL::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 GL::Texture::image() "*Texture::image()" and
|
|
|
|
|
@ref GL::Framebuffer::read() "*Framebuffer::read()"
|
|
|
|
|
now reallocate image data only if needed, for both @ref Image and
|
|
|
|
|
@ref GL::BufferImage "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 GL::Framebuffer::read() "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 GL::Buffer::map() "Buffer::map()" now returns
|
|
|
|
|
@ref Corrade::Containers::ArrayView instead of a plain pointer for better
|
|
|
|
|
security
|
|
|
|
|
- Improved @ref GL::Context::resetState() "Context::resetState()" to better
|
|
|
|
|
handle corner cases with VAOs
|
|
|
|
|
- Graceful handling of broken GL contexts
|
|
|
|
|
- Behavior of @ref GL::Version::GLES200 "Version::GLES200" and upwards on
|
|
|
|
|
desktop OpenGL is changed to request an ES dialect of GLSL when used in
|
|
|
|
|
@ref GL::Shader "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 GL::Texture::setImage() "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 GL::CubeMapTexture "CubeMapTexture" is now correctly
|
|
|
|
|
two-dimensional instead of three-dimensional, wrapping mode for
|
|
|
|
|
@ref GL::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 GL::Framebuffer::attachCubeMapTexture() "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 GL::Framebuffer::DrawAttachment "Framebuffer::DrawAttachment"
|
|
|
|
|
to avoid linker failures on Windows
|
|
|
|
|
- Fixed @ref GL::Framebuffer "Framebuffer" attachments on GLES2 drivers w/o
|
|
|
|
|
separate read/draw bindings (see
|
|
|
|
|
[mosra/magnum#204](https://github.com/mosra/magnum/issues/204))
|
|
|
|
|
- Fixed @ref GL::Framebuffer "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 `Primitives::Cylinder::solid()` and
|
|
|
|
|
`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 GL::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/GL/PixelFormat.h "Magnum/PixelFormat.h",
|
|
|
|
|
@ref GL::PixelFormat "PixelFormat" and @ref GL::PixelType "PixelType"
|
|
|
|
|
instead
|
|
|
|
|
- @ref Image, @ref ImageView, @ref Trade::ImageData constructors,
|
|
|
|
|
`Image::setData()` and `ImageView::setData()` taking `void*` are
|
|
|
|
|
deprecated, use constructors and functions taking
|
|
|
|
|
@ref Corrade::Containers::Array / @ref Corrade::Containers::ArrayView
|
|
|
|
|
instead
|
|
|
|
|
- Templated @ref GL::Buffer::data() "Buffer:.data()",
|
|
|
|
|
@ref GL::Buffer::subData() "Buffer::subData()" and
|
|
|
|
|
@ref GL::Buffer::map() "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 GL::CubeMapCoordinate "CubeMapCoordinate" instead
|
|
|
|
|
- @ref GL::Context::current() "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 GL::Context::hasCurrent() "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 GL::DebugMessage "DebugMessage" class
|
|
|
|
|
instead
|
|
|
|
|
- Removed deprecated `*Buffer` values from
|
|
|
|
|
@ref GL::FramebufferBlit "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 GL::Shader::maxCombinedTextureImageUnits() "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 GL::Mesh::setCount() "Mesh*::setCount()" and
|
|
|
|
|
@ref GL::MeshView::setIndexRange() "MeshView::setIndexRange()" instead
|
|
|
|
|
- Removed deprecated parameterless @ref GL::Mesh::draw() "Mesh*::draw()"
|
|
|
|
|
overload, use the one with explicit shader parameter instead
|
|
|
|
|
- Removed deprecated `Context::Flag::Robustness` enum value, use
|
|
|
|
|
@ref GL::Context::Flag::RobustAccess "Context::Flag::RobustAccess" instead
|
|
|
|
|
- Removed deprecated `Texture::Target` enum, use dedicated
|
|
|
|
|
@ref GL::Texture "Texture", @ref GL::TextureArray "TextureArray",
|
|
|
|
|
@ref GL::RectangleTexture "RectangleTexture" and
|
|
|
|
|
@ref GL::MultisampleTexture "MultisampleTexture" classes instead
|
|
|
|
|
- Removed deprecated @ref Resource conversion operator, use explicit
|
|
|
|
|
conversion instead
|
|
|
|
|
- Removed deprecated `Framebuffer::attachTexture*D()` overloads, use one of
|
|
|
|
|
@ref GL::Framebuffer::attachTexture() "Framebuffer::attachTexture()" or
|
|
|
|
|
@ref GL::Framebuffer::attachTextureLayer() "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 GL::Mesh "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.
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|