|
|
|
|
/*
|
|
|
|
|
This file is part of Magnum.
|
|
|
|
|
|
|
|
|
|
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
|
|
|
|
|
2020, 2021, 2022, 2023, 2024, 2025
|
|
|
|
|
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-old Archived changelogs
|
|
|
|
|
|
|
|
|
|
@tableofcontents
|
|
|
|
|
|
|
|
|
|
See also:
|
|
|
|
|
|
|
|
|
|
- @subpage changelog-plugins-old "Archived plugin changelogs"
|
|
|
|
|
- @subpage changelog-integration-old "Archived integration changelogs"
|
|
|
|
|
- @subpage changelog-examples-old "Archived example changelogs"
|
|
|
|
|
|
|
|
|
|
@section changelog-2018-04 2018.04
|
|
|
|
|
|
|
|
|
|
Released 2018-05-01, tagged as
|
|
|
|
|
[v2018.04](https://github.com/mosra/magnum/releases/tag/v2018.04).
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2018-04-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-2018-04-new New features
|
|
|
|
|
|
|
|
|
|
- New @ref PixelFormat / @ref CompressedPixelFormat enums containing generic
|
|
|
|
|
API-independent pixel formats, together with @cpp pixelSize() @ce,
|
|
|
|
|
@ref pixelFormatWrap() / @ref pixelFormatUnwrap(),
|
|
|
|
|
@ref compressedPixelFormatWrap() / @ref compressedPixelFormatUnwrap() and @ref isPixelFormatImplementationSpecific() /
|
|
|
|
|
@ref isCompressedPixelFormatImplementationSpecific() utilities now used by
|
|
|
|
|
@ref Image / @ref CompressedImage and @ref ImageView /
|
|
|
|
|
@ref CompressedImageView instead of the GL-specific formats
|
|
|
|
|
- New @ref MeshPrimitive and @ref MeshIndexType enums containing generic
|
|
|
|
|
API-independent mesh primitive types and index types, together with
|
|
|
|
|
@ref meshIndexTypeSize() utilities
|
|
|
|
|
- New @ref SamplerFilter, @ref SamplerMipmap and @ref SamplerWrapping enums
|
|
|
|
|
containing generic API-independent texture sampler modes
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-new-math Math library
|
|
|
|
|
|
|
|
|
|
- Added @ref Math::isInf(), @ref Math::isNan()
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-new-gl GL library
|
|
|
|
|
|
|
|
|
|
- A new library that now contains wrappers for the OpenGL family of graphics
|
|
|
|
|
APIs, separated from the core Magnum library (see
|
|
|
|
|
[mosra/magnum#233](https://github.com/mosra/magnum/pull/233))
|
|
|
|
|
- New @ref GL::hasPixelFormat(), @ref GL::pixelFormat(), @ref GL::pixelType(),
|
|
|
|
|
@ref GL::hasCompressedPixelFormat(), @ref GL::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 (see
|
|
|
|
|
[mosra/magnum#224](https://github.com/mosra/magnum/issues/224),
|
|
|
|
|
[mosra/magnum#231](https://github.com/mosra/magnum/pull/231))
|
|
|
|
|
- New OpenGL extension support:
|
|
|
|
|
- @gl_extension{ARB,texture_filter_anisotropic}
|
|
|
|
|
- @gl_extension{OES,texture_float}, @gl_extension2{OES,texture_half_float,OES_texture_float}
|
|
|
|
|
- @gl_extension{EXT,color_buffer_float},
|
|
|
|
|
@gl_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-2018-04-new-platform Platform libraries
|
|
|
|
|
|
|
|
|
|
- Ability to create @ref Platform::Sdl2Application and
|
|
|
|
|
@ref Platform::GlfwApplication classes without implicitly created OpenGL
|
|
|
|
|
context by passing @ref Platform::Sdl2Application::Configuration::WindowFlag::Contextless "Configuration::WindowFlag::Contextless"
|
|
|
|
|
to them. These two can be now also built completely without the GL library.
|
|
|
|
|
- Added @ref Platform::AndroidApplication::windowSize()
|
|
|
|
|
- Added @ref Platform::AndroidApplication::nativeActivity() to access
|
|
|
|
|
underlying `ANativeActivity` structure for calling various Android APIs
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-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-2018-04-new-trade Trade library
|
|
|
|
|
|
|
|
|
|
- Debug output operator for @ref Trade::PhongMaterialData::Flag and
|
|
|
|
|
@ref Trade::PhongMaterialData::Flags
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2018-04-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-2018-04-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-2018-04-changes-gl GL library
|
|
|
|
|
|
|
|
|
|
- The @ref GL::Mesh::indexTypeSize() and @cpp GL::MeshView::setIndexRange() @ce
|
|
|
|
|
now expect that the mesh is indexed (instead of silently not doing
|
|
|
|
|
anything)
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-changes-text Text library
|
|
|
|
|
|
|
|
|
|
- The @cpp Text::GlyphCache @ce now unconditionally uses
|
|
|
|
|
@ref GL::TextureFormat::Luminance on ES2 and WebGL 1, instead of trying
|
|
|
|
|
@ref GL::TextureFormat::Red there first. That's done for consistency with
|
|
|
|
|
@ref GL::pixelFormat(), which unconditionally returns
|
|
|
|
|
@ref GL::PixelFormat::Luminance for @ref PixelFormat::R8Unorm.
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-changes-platform Platform libraries
|
|
|
|
|
|
|
|
|
|
- Separated @ref Platform::Sdl2Application::Configuration "Platform::*Application::Configuration"
|
|
|
|
|
into @ref Platform::Sdl2Application::Configuration "Configuration" and
|
|
|
|
|
@ref Platform::Sdl2Application::GLConfiguration "GLConfiguration" to allow
|
|
|
|
|
creation of non-GL application instances in the future
|
|
|
|
|
|
|
|
|
|
@subsubsection changelog-2018-04-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
|
|
|
|
|
- @ref Trade::AnySceneImporter "AnySceneImporter" now uses `GlbImporter` for
|
|
|
|
|
loading binary glTF files instead of proxying them to `GltfImporter`
|
|
|
|
|
plugins
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2018-04-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. See also [mosra/magnum#235](https://github.com/mosra/magnum/issues/235).
|
|
|
|
|
- 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
|
|
|
|
|
- Suppressed a MSVC warning in @ref MeshTools::interleave() (see
|
|
|
|
|
[mosra/magnum#238](https://github.com/mosra/magnum/issues/238))
|
|
|
|
|
- Fixed Vcpkg packages to properly copy all plugin and their dependencies
|
|
|
|
|
along the executable (see [mosra/magnum#235](https://github.com/mosra/magnum/issues/235),
|
|
|
|
|
[mosra/magnum-examples#41](https://github.com/mosra/magnum-examples/issues/41))
|
|
|
|
|
- Stable version of Magnum is now available as a binary package in the
|
|
|
|
|
ArchLinux `[community]` repo
|
|
|
|
|
- Homebrew macOS packages were updated to install the stable version by
|
|
|
|
|
default
|
|
|
|
|
- Fixed the Debian package after introducing `SOVERSION` to all libraries
|
|
|
|
|
(see [mosra/magnum#237](https://github.com/mosra/magnum/issues/237))
|
|
|
|
|
- Fixed the Debian package to not include a revision. While just a warning on
|
|
|
|
|
Ubuntu, it's a hard error on Debian. (See [mosra/corrade#44](https://github.com/mosra/corrade/issues/44).)
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2018-04-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Engine startup info was not properly printed to Android log since
|
|
|
|
|
introducing the `--magnum-log` option in version 2018.02
|
|
|
|
|
- Dropped Google Closure Compiler from Emscripten toolchains, it was bringing
|
|
|
|
|
more harm than good (see [mosra/magnum#211](https://github.com/mosra/magnum/issues/211))
|
|
|
|
|
- Working around Emscripten issue where `-s USE_PTHREADS=1` would cause all
|
|
|
|
|
shader sources containing Unicode characters to be truncated to empty
|
|
|
|
|
strings. See the @cpp "emscripten-pthreads-broken-unicode-shader-sources" @ce
|
|
|
|
|
workaround description and [mosra/magnum#239](https://github.com/mosra/magnum/issues/239)
|
|
|
|
|
for details.
|
|
|
|
|
- @cpp GL::Attribute::DataType::HalfFloat @ce 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-2018-04-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
|
|
|
|
|
- `Platform::*Application::createContext()` and
|
|
|
|
|
`Platform::*Application::tryCreateContext()` functions are deprecated for
|
|
|
|
|
being too GL-specific, use @ref Platform::Sdl2Application::create() "create()"
|
|
|
|
|
and @ref Platform::Sdl2Application::tryCreate() "tryCreate()" instead
|
|
|
|
|
- The `Extensions::GL` namespace is deprecated, use @ref GL::Extensions
|
|
|
|
|
instead
|
|
|
|
|
- The @ref PixelFormat and @ref CompressedPixelFormat enum now contains
|
|
|
|
|
generic API-independent values. The GL-specific formats are present there,
|
|
|
|
|
but marked as deprecated. Use either the generic values or
|
|
|
|
|
@ref GL::PixelFormat (together with @ref GL::PixelType) and
|
|
|
|
|
@ref GL::CompressedPixelFormat instead.
|
|
|
|
|
- `PixelStorage::pixelSize()` was deprecated, use @cpp GL::pixelSize() @ce
|
|
|
|
|
or @cpp Magnum::pixelSize() @ce 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 @cpp GL::pixelSize() @ce instead
|
|
|
|
|
- `Image*::type()` functions are deprecated as these are too GL-specific. The
|
|
|
|
|
second format specifier is now available through @ref Image::formatExtra(),
|
|
|
|
|
@ref ImageView::formatExtra() and @ref Trade::ImageData::formatExtra()
|
|
|
|
|
- `Audio::Buffer::Format` is deprecated, use @ref 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
|
|
|
|
|
@cpp GL::Mesh::indexTypeSize() @ce 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::Line @ce is deprecated, use the
|
|
|
|
|
@ref Primitives::line2D() and @ref Primitives::line3D() free functions
|
|
|
|
|
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
|
|
|
|
|
@cpp Shaders::*Vector::bindVectorTexture() @ce,
|
|
|
|
|
@cpp Shaders::Flat::bindTexture() @ce,
|
|
|
|
|
@cpp Shaders::Phong::bindAmbientTexture() @ce,
|
|
|
|
|
@cpp Shaders::Phong::bindDiffuseTexture() @ce,
|
|
|
|
|
@cpp Shaders::Phong::bindSpecularTexture() @ce
|
|
|
|
|
and @cpp Shaders::Phong::bindTextures() @ce instead.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2018-04-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.
|
|
|
|
|
- The `Magnum::Context` target alias was renamed to `Magnum::GLContext`. No
|
|
|
|
|
backwards compatibility aliases are provided.
|
|
|
|
|
- @ref PixelStorage::dataProperties(), @ref Image::dataProperties(),
|
|
|
|
|
@ref ImageView::dataProperties(), @ref Trade::ImageData::dataProperties(), and @ref GL::BufferImage::dataProperties() now return just a pair of two
|
|
|
|
|
values, as the third value is now accessible directly through
|
|
|
|
|
@ref Image::pixelSize() "*Image::pixelSize()" and no longer calculated
|
|
|
|
|
on-demand
|
|
|
|
|
- @ref CompressedPixelStorage::dataProperties(),
|
|
|
|
|
@ref CompressedImage::dataProperties(),
|
|
|
|
|
@ref CompressedImageView::dataProperties() and
|
|
|
|
|
@ref GL::CompressedBufferImage::dataProperties() now return just a pair
|
|
|
|
|
of two values, as the third value is accessible directly through
|
|
|
|
|
@ref CompressedPixelStorage::compressedBlockDataSize()
|
|
|
|
|
- @ref ImageView and @ref CompressedImageView methods are no longer
|
|
|
|
|
@cpp constexpr @ce. It might be possible to have them @cpp constexpr @ce in
|
|
|
|
|
C++14, but the resulting increase in maintenance costs and compile times is
|
|
|
|
|
not worth it.
|
|
|
|
|
- `PixelFormat` has been moved verbatim to @ref GL::PixelFormat and there's a
|
|
|
|
|
new @ref Magnum::PixelFormat enum for generic pixel formats. It contains
|
|
|
|
|
(deprecated) @ref GL::PixelFormat values for covering most of backwards
|
|
|
|
|
compatibility, but code that relies on these two types being the same may
|
|
|
|
|
break. In particular, @ref GL::BufferImage::format() now returns
|
|
|
|
|
@ref GL::PixelFormat instead of @ref Magnum::PixelFormat, code depending on
|
|
|
|
|
the return type being implicitly convertible to @ref Magnum::PixelFormat
|
|
|
|
|
may break. In all other cases, @ref Image::format() "Image*::format()"
|
|
|
|
|
returns @ref Magnum::PixelFormat.
|
|
|
|
|
- `CompressedPixelFormat` has been moved verbatim to
|
|
|
|
|
@ref GL::CompressedPixelFormat and there's a new
|
|
|
|
|
@ref Magnum::CompressedPixelFormat enum for generic pixel formats. It
|
|
|
|
|
contains (deprecated) @ref GL::CompressedPixelFormat values for covering
|
|
|
|
|
most of backwards compatibility, but code that relies on these two types
|
|
|
|
|
being the same may break. In particular,
|
|
|
|
|
@ref GL::CompressedBufferImage::format() now returns
|
|
|
|
|
@ref GL::CompressedPixelFormat instead of @ref Magnum::CompressedPixelFormat,
|
|
|
|
|
code depending on the return type being implicitly convertible to
|
|
|
|
|
@ref Magnum::CompressedPixelFormat may break. In all other cases,
|
|
|
|
|
@ref CompressedImage::format() "CompressedImage*::format()"
|
|
|
|
|
returns @ref Magnum::CompressedPixelFormat.
|
|
|
|
|
- `MeshPrimitive` has been moved verbatim to @ref GL::MeshPrimitive and
|
|
|
|
|
there's a new @ref Magnum::MeshPrimitive enum for generic primitive types.
|
|
|
|
|
It contains (deprecated) additional @ref GL::MeshPrimitive values for
|
|
|
|
|
covering most of backwards compatibility, but code that relies on these
|
|
|
|
|
two types being the same (or have values that match GL enums) may break.
|
|
|
|
|
In particular, @ref GL::Mesh::primitive() now returns
|
|
|
|
|
@ref GL::MeshPrimitive instead of @ref Magnum::MeshPrimitive, code
|
|
|
|
|
depending on the return type being implicitly convertible to
|
|
|
|
|
@ref Magnum::MeshPrimitive may break. In all other cases,
|
|
|
|
|
`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
|
|
|
|
|
- The @ref Image::pixelSize(), @ref ImageView::pixelSize(),
|
|
|
|
|
@ref Trade::ImageData::pixelSize() and @ref GL::BufferImage::pixelSize()
|
|
|
|
|
functions now return @ref UnsignedInt instead of @cpp std::size_t @ce.
|
|
|
|
|
- Removed `PixelStorage::setSwapBytes()`, as every Magnum API dealing with
|
|
|
|
|
images basically only asserted that it's not set. Use
|
|
|
|
|
@ref Corrade::Utility::Endianness instead.
|
|
|
|
|
- Removed the @cpp Buffer::Usage @ce enum that was deprecated in 2014.01, use
|
|
|
|
|
the global @ref GL::BufferUsage enum instead
|
|
|
|
|
- Removed the `Magnum/Query.h` header that was deprecated in 2015.05, use one
|
|
|
|
|
of `Magnum/PrimitiveQuery.h`, `Magnum/SampleQuery.h` or
|
|
|
|
|
`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 GL::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-2018-04-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](https://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 (see also
|
|
|
|
|
[mosra/magnum-bootstrap#11](https://github.com/mosra/magnum-bootstrap/issues/11))
|
|
|
|
|
- WebGL 2.0 support
|
|
|
|
|
- New OpenGL extension support:
|
|
|
|
|
- @gl_extension{EXT,draw_buffers} ES2 extension
|
|
|
|
|
- @gl_extension{EXT,sRGB_write_control} ES extension
|
|
|
|
|
- @gl_extension{NV,polygon_mode} ES extension
|
|
|
|
|
- @gl_extension{KHR,blend_equation_advanced},
|
|
|
|
|
@gl_extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced}
|
|
|
|
|
desktop and ES extensions
|
|
|
|
|
- @gl_extension{ANDROID,extension_pack_es31a} ES3 extension, which
|
|
|
|
|
includes:
|
|
|
|
|
- @gl_extension{OES,texture_storage_multisample_2d_array}
|
|
|
|
|
- @gl_extension{OES,texture_stencil8}
|
|
|
|
|
- @gl_extension{EXT,texture_border_clamp}
|
|
|
|
|
- @gl_extension{EXT,texture_cube_map_array}
|
|
|
|
|
- @gl_extension{EXT,texture_buffer}
|
|
|
|
|
- @gl_extension{EXT,geometry_shader}
|
|
|
|
|
- @gl_extension{EXT,tessellation_shader}
|
|
|
|
|
- @gl_extension{NV,shader_noperspective_interpolation} ES3 extension
|
|
|
|
|
- @gl_extension{EXT,texture_compression_s3tc} desktop and ES extension,
|
|
|
|
|
@webgl_extension{WEBGL,compressed_texture_s3tc} WebGL extension
|
|
|
|
|
- @gl_extension2{KHR,texture_compression_astc_ldr,KHR_texture_compression_astc_hdr},
|
|
|
|
|
@gl_extension{KHR,texture_compression_astc_hdr} desktop and ES
|
|
|
|
|
extension
|
|
|
|
|
- @gl_extension{EXT,unpack_subimage} and @gl_extension{NV,pack_subimage}
|
|
|
|
|
ES2 extensions
|
|
|
|
|
- @gl_extension{ARB,uniform_buffer_object} and its ES3/WebGL2
|
|
|
|
|
counterpart, except for data layout queries
|
|
|
|
|
- @gl_extension{ARB,texture_barrier}
|
|
|
|
|
- @gl_extension{ARB,shader_storage_buffer_object} and its ES3.1
|
|
|
|
|
counterpart
|
|
|
|
|
- @gl_extension{ARB,compute_shader} and its ES3.1 counterpart
|
|
|
|
|
- @gl_extension{ARB,shader_image_load_store} and its ES3.1 counterpart
|
|
|
|
|
- @gl_extension{KHR,no_error} desktop and ES extension
|
|
|
|
|
- @gl_extension{EXT,shader_framebuffer_fetch}, @gl_extension{ARM,shader_framebuffer_fetch}
|
|
|
|
|
and @gl_extension{ARM,shader_framebuffer_fetch_depth_stencil} (partial
|
|
|
|
|
support)
|
|
|
|
|
- @gl_extension{ARB,transform_feedback2},
|
|
|
|
|
@gl_extension{ARB,transform_feedback3},
|
|
|
|
|
@gl_extension{AMD,transform_feedback3_lines_triangles},
|
|
|
|
|
@gl_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
|
|
|
|
|
@cpp MAGNUM_BUILD_MULTITHREADED @ce 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 `Math::Geometry::Intersection::pointFrustum()`,
|
|
|
|
|
`Math::Geometry::Intersection::boxFrustum()` functions (see
|
|
|
|
|
[mosra/magnum#185](https://github.com/mosra/magnum/pull/185)
|
|
|
|
|
- New @ref Math::Half class, @link Math::Literals::HalfLiterals::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 `Math::Geometry::Distance::pointPlane()`,
|
|
|
|
|
`Math::Geometry::Distance::pointPlaneScaled()`,
|
|
|
|
|
`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 @cpp Math::lerp(const Vector<size, T>&, const Vector<size, T>&, const BoolVector<size>&) @ce
|
|
|
|
|
- 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 @cpp Math::BoolVector @ce (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),
|
|
|
|
|
[mosra/magnum-bootstrap#6](https://github.com/mosra/magnum-bootstrap/pull/6))
|
|
|
|
|
- Text input support in @ref Platform::Sdl2Application and
|
|
|
|
|
@ref Platform::GlfwApplication (see [mosra/magnum#129](https://github.com/mosra/magnum/issues/129))
|
|
|
|
|
- Added @cpp Platform::WindowlessWindowsEglApplication @ce 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 @cpp Platform::Sdl2Application::Configuration::setSRGBCapable() @ce
|
|
|
|
|
- Added @ref Platform::Sdl2Application::Configuration::WindowFlag::Borderless
|
|
|
|
|
and `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 @cpp Trade::MeshData2D @ce and
|
|
|
|
|
@cpp Trade::MeshData3D @ce
|
|
|
|
|
- @ref Trade::AbstractImageConverter member functions were changed to
|
|
|
|
|
non-@cpp const @ce to make implementation of complex converter plugins possible
|
|
|
|
|
- New @cpp Trade::AbstractImageConverter::exportToCompressedImage() @ce
|
|
|
|
|
plugin interface and @cpp Trade::AbstractImageConverter::exportToData() @ce,
|
|
|
|
|
@cpp Trade::AbstractImageConverter::exportToFile() @ce 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
|
|
|
|
|
@cpp Trade::AbstractImageConverter::exportToFile() @ce)
|
|
|
|
|
- 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 @gl_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
|
|
|
|
|
@gl_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
|
|
|
|
|
|
|
|
|
|
- @cpp Shaders::Flat @ce now sets default color to white only in textured
|
|
|
|
|
version
|
|
|
|
|
- @cpp Shaders::Phong @ce gained the ability to have both color and texture
|
|
|
|
|
- @cpp Shaders::Phong @ce 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
|
|
|
|
|
- Fixed `EMSCRIPTEN` environment variable handling in Emscripten toolchains
|
|
|
|
|
(see [mosra/toolchains#2](https://github.com/mosra/toolchains/pull/2),
|
|
|
|
|
[mosra/toolchains#3](https://github.com/mosra/toolchains/issues/3))
|
|
|
|
|
|
|
|
|
|
@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 @cpp TextureTools::distanceField() @ce on 3.0 <= GL < 3.2
|
|
|
|
|
- Fixed driver crash on AMD with @cpp TextureTools::distanceField() @ce
|
|
|
|
|
- @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 @gl_extension{EXT,debug_label}
|
|
|
|
|
extension
|
|
|
|
|
- @gl_extension{EXT,direct_state_access} function was accidentally used in
|
|
|
|
|
@gl_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 @cpp Math::BoolVector::set() @ce (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
|
|
|
|
|
- @cpp Trade::MeshData2D @ce and @cpp Trade::MeshData3D @ce constructors
|
|
|
|
|
without the `colors` parameter are deprecated, use the full ones instead
|
|
|
|
|
- @cpp Shaders::Generic::Color @ce vertex attribute implicit constructor is
|
|
|
|
|
deprecated, use a constructor with explicit component count instead
|
|
|
|
|
- The bundled @ref 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 `Math::Geometry::Distance` and `Math::Geometry::Intersection` classes
|
|
|
|
|
are now a namespace (might break `using` declarations, but otherwise it's
|
|
|
|
|
fully source-compatible)
|
|
|
|
|
- Removed `Context::majorVersion()` and `Context::minorVersion()` functions,
|
|
|
|
|
use @ref GL::Context::version() instead
|
|
|
|
|
- Removed deprecated `Magnum/DebugMarker.h` header, use
|
|
|
|
|
`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 @cpp MeshTools::combineIndexedArrays() @ce,
|
|
|
|
|
@ref MeshTools::compressIndices(), @ref MeshTools::interleave() and
|
|
|
|
|
@cpp MeshTools::removeDuplicates() @ce overloads, use the general ones
|
|
|
|
|
instead
|
|
|
|
|
- Removed deprecated `Mesh*::set*{Range,Count}()` functions, use
|
|
|
|
|
@ref GL::Mesh::setCount() "Mesh*::setCount()" and
|
|
|
|
|
@cpp MeshView::setIndexRange() @ce instead
|
|
|
|
|
- Removed deprecated parameterless @cpp GL::Mesh::draw() @ce 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](https://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
|
|
|
|
|
- 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),
|
|
|
|
|
[mosra/magnum-bootstrap#8](https://github.com/mosra/magnum-bootstrap/issues/8))
|
|
|
|
|
|
|
|
|
|
@section changelog-2015-05 2015.05
|
|
|
|
|
|
|
|
|
|
Released 2015-05-09, tagged as
|
|
|
|
|
[v2015.05](https://github.com/mosra/magnum/releases/tag/v2015.05). See the
|
|
|
|
|
[release announcement](https://blog.magnum.graphics/announcements/may-2015-updates/)
|
|
|
|
|
for a high-level overview.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-new New features
|
|
|
|
|
|
|
|
|
|
- Proper extension loading for OpenGL ES 2.0, 3.0 and 3.1 using flextGL.
|
|
|
|
|
- Enabled already implemented functionality on OpenGL ES 3.1.
|
|
|
|
|
- Support for new OpenGL functionality:
|
|
|
|
|
|
|
|
|
|
- Support for @gl_extension{ARB,direct_state_acccess} (OpenGL 4.5)
|
|
|
|
|
everywhere except in Mesh.
|
|
|
|
|
- Support for @gl_extension{ARB,conditional_render_inverted} (OpenGL
|
|
|
|
|
4.5) in @cpp SampleQuery @ce.
|
|
|
|
|
- Support for @gl_extension{ARB,get_texture_sub_image} (OpenGL 4.5) in
|
|
|
|
|
@cpp *Texture::subImage() @ce.
|
|
|
|
|
- Support for @gl_extension{EXT,transform_feedback},
|
|
|
|
|
@gl_extension{ARB,transform_feedback2} (OpenGL 3.0, 4.0, OpenGL ES 3.0) in
|
|
|
|
|
new @cpp TransformFeedback @ce class, added
|
|
|
|
|
@cpp Renderer::Feature::RasterizerDiscard @ce.
|
|
|
|
|
- Support for @gl_extension{ARB,robustness_isolation} in
|
|
|
|
|
@cpp Renderer::graphicsResetStatus() @ce.
|
|
|
|
|
- Support for @gl_extension{ARB,framebuffer_sRGB} (OpenGL 3.0) in
|
|
|
|
|
@cpp Renderer::Feature::FramebufferSRGB @ce
|
|
|
|
|
- Support for @gl_extension{OES,texture_npot} ES extension.
|
|
|
|
|
- Support for debug groups from @gl_extension{KHR,debug} (OpenGL 4.5) and
|
|
|
|
|
@gl_extension{EXT,debug_marker} extensions in @cpp DebugGroup @ce class.
|
|
|
|
|
|
|
|
|
|
- Added @cpp CubeMapTexture::*image() @ce that returns all six faces
|
|
|
|
|
together.
|
|
|
|
|
- Added @cpp Primitives::Cube::solidStrip() @ce.
|
|
|
|
|
- Added @cpp AbstractShaderProgram::attachShaders() @ce as a list-based
|
|
|
|
|
complement to @cpp Shader::compile() @ce and
|
|
|
|
|
@cpp AbstractShaderProgram::link() @ce.
|
|
|
|
|
- Separated @cpp Renderer::setFeature() @ce into shorter
|
|
|
|
|
@cpp Renderer::enable() @ce and @cpp Renderer::disable() @ce.
|
|
|
|
|
- Added @cpp tau() @ce, @cpp piHalf() @ce, @cpp e() @ce, @cpp nan() @ce and
|
|
|
|
|
@cpp inf() @ce to @ref Math::Constants.
|
|
|
|
|
- Added @ref Math::Matrix4::shearingXY() "Math::Matrix[34]::shearing*()".
|
|
|
|
|
- Added @ref Math::Matrix4::lookAt() (see [mosra/magnum#88](https://github.com/mosra/magnum/issues/88)).
|
|
|
|
|
- Added @ref Math::Vector::pad().
|
|
|
|
|
- Added @ref Math::div().
|
|
|
|
|
- Using range-based-for to traverse object children and features in
|
|
|
|
|
@ref SceneGraph and screens in @ref Platform::BasicScreenedApplication "Platform::ScreenedApplication".
|
|
|
|
|
- Convenience overload for @cpp *Framebuffer::read() @ce and
|
|
|
|
|
@cpp *Texture::image() @ce that returns the queried image by value instead
|
|
|
|
|
of as parameter.
|
|
|
|
|
- Added @cpp Buffer::uniformOffsetAlignment() @ce and @cpp Mesh::maxElementIndex() @ce
|
|
|
|
|
limit queries.
|
|
|
|
|
- Added @cpp AbstractTexture::unbind() @ce for unbinding range of texture
|
|
|
|
|
units.
|
|
|
|
|
- Added @ref SceneGraph::AbstractObject::addFeature() and
|
|
|
|
|
@ref SceneGraph::Object::addChild() functions (see [mosra/magnum#86](https://github.com/mosra/magnum/issues/86)).
|
|
|
|
|
- VSync support in @ref Platform::Sdl2Application.
|
|
|
|
|
- Added `Platform::*Context` libraries for users which want to use custom
|
|
|
|
|
windowing toolkits instead of the ones provided.
|
|
|
|
|
- Improved documentation about @ref Shaders namespace, added sample image
|
|
|
|
|
for each.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-changes Changes
|
|
|
|
|
|
|
|
|
|
- Using [flextGL](https://github.com/ginkgo/flextgl) instead of `glLoadGen`
|
|
|
|
|
for OpenGL extension loading
|
|
|
|
|
- @ref Platform::Sdl2Application now tries to create core context on all
|
|
|
|
|
platforms, not just OSX (see [mosra/magnum#80](https://github.com/mosra/magnum/issues/80)).
|
|
|
|
|
- @cpp Buffer::bind() @ce, @cpp Buffer::unbind() @ce and @cpp Buffer::Target @ce
|
|
|
|
|
is now used for indexed buffer binding only.
|
|
|
|
|
- Moved static binary operations from @ref Math classes into free functions
|
|
|
|
|
for more convenient usage (see [mosra/magnum#74](https://github.com/mosra/magnum/issues/74)).
|
|
|
|
|
- Better algorithm for comparing floating-point values.
|
|
|
|
|
- Ensuring that all OpenGL objects are properly created before using them.
|
|
|
|
|
- Using @cpp const char @ce instead of @cpp const unsigned char @ce for raw
|
|
|
|
|
binary data.
|
|
|
|
|
- Removed annoying restriction when adding reference-counted resources to
|
|
|
|
|
@ref ResourceManager.
|
|
|
|
|
- Extension querying cleanup:
|
|
|
|
|
- Removed @gl_extension{APPLE,flush_buffer_range} extension.
|
|
|
|
|
- Replaced @gl_extension{APPLE,vertex_array_object} with
|
|
|
|
|
@gl_extension{ARB,vertex_array_object}.
|
|
|
|
|
- Replaced @gl_extension{NV,half_float} with @gl_extension{ARB,half_float_vertex}.
|
|
|
|
|
- Replaced @gl_extension{EXT,framebuffer_sRGB} with @gl_extension{ARB,framebuffer_sRGB}.
|
|
|
|
|
- Documentation cleanup, fixes and improvements.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-buildsystem Build system
|
|
|
|
|
|
|
|
|
|
- CMake now always installs `FindMagnum.cmake` to library-specific
|
|
|
|
|
location, making it usable without providing own copy of the file in
|
|
|
|
|
depending projects. The `WITH_FIND_MODULE` option is no longer needed.
|
|
|
|
|
- CMake now handles inter-library dependencies automatically without manually
|
|
|
|
|
specifying each and every one (see [mosra/magnum#73](https://github.com/mosra/magnum/issues/73)).
|
|
|
|
|
- Ability to control static build of plugins separately using
|
|
|
|
|
`BUILD_PLUGINS_STATIC`.
|
|
|
|
|
- Displaying all header files, plugin metadata files and resource files in
|
|
|
|
|
project view to make use of some IDEs less painful (such as QtCreator).
|
|
|
|
|
- Gentoo ebuild (see [mosra/magnum#69](https://github.com/mosra/magnum/issues/69),
|
|
|
|
|
[mosra/magnum#83](https://github.com/mosra/magnum/issues/83)).
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Fixed @cpp TextureTools::distanceField() @ce to work in GLSL < 4.20 (see
|
|
|
|
|
[mosra/magnum#62](https://github.com/mosra/magnum/issues/62)).
|
|
|
|
|
- Fixed @cpp Shaders::MeshVisualizer @ce to work in GLSL ES.
|
|
|
|
|
- Fixed @cpp Shaders::*Vector @ce on Intel GPUs.
|
|
|
|
|
- Fixed assertion on contexts without default framebuffer (see
|
|
|
|
|
[mosra/magnum#93](https://github.com/mosra/magnum/issues/93)).
|
|
|
|
|
- Fixed cases where shader would use extension that is not advertised by the
|
|
|
|
|
driver.
|
|
|
|
|
- Properly handle case where
|
|
|
|
|
@fn_gl_extension{VertexArrayVertexAttribDivisor,EXT,direct_state_access} is
|
|
|
|
|
not available in the driver (see [mosra/magnum#77](https://github.com/mosra/magnum/issues/77)).
|
|
|
|
|
- Removed superfluous level argument from @cpp Framebuffer::attachTexture*() @ce
|
|
|
|
|
overloads for texture types that don't support mipmapping.
|
|
|
|
|
- Proper no-op fallback for @cpp *Framebuffer::invalidate() @ce
|
|
|
|
|
on platforms where the extensions is not supported (see
|
|
|
|
|
[mosra/magnum#63](https://github.com/mosra/magnum/issues/63)).
|
|
|
|
|
- Fixed garbage characters in shader compilation output (see
|
|
|
|
|
[mosra/magnum#87](https://github.com/mosra/magnum/issues/87)).
|
|
|
|
|
- Fixed memory corruption on MSVC 2013 (see [mosra/magnum#70](https://github.com/mosra/magnum/issues/70)).
|
|
|
|
|
- Fixed potential memory corruption errors with static build (see
|
|
|
|
|
[mosra/magnum#79](https://github.com/mosra/magnum/issues/79)).
|
|
|
|
|
- Fixed aspect-ratio-corrected projection with inverted Y in
|
|
|
|
|
@ref SceneGraph::Camera3D "SceneGraph::Camera*D".
|
|
|
|
|
- Fixed wheel direction in @ref Platform::Sdl2Application (see
|
|
|
|
|
[mosra/magnum#68](https://github.com/mosra/magnum/issues/68)).
|
|
|
|
|
- Fixed bogus version check in @ref Platform::WindowlessCglApplication (see
|
|
|
|
|
[mosra/magnum#92](https://github.com/mosra/magnum/issues/92))
|
|
|
|
|
- Fixed matrix to quaternion conversion algorithm.
|
|
|
|
|
- Two different headers in @ref Primitives had the same include guard by
|
|
|
|
|
accident (see [mosra/magnum#72](https://github.com/mosra/magnum/issues/53))
|
|
|
|
|
- Various compilation fixes on various platforms (see
|
|
|
|
|
[mosra/magnum#71](https://github.com/mosra/magnum/pull/71))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-deprecated Deprecated APIs
|
|
|
|
|
|
|
|
|
|
- The `Magnum/Query.h` header is deprecated, use one of
|
|
|
|
|
`Magnum/PrimitiveQuery.h`, `Magnum/SampleQuery.h` or
|
|
|
|
|
`Magnum/TimeQuery.h` instead.
|
|
|
|
|
- Using @cpp Buffer::Target @ce as constructor or @cpp Buffer::setTargetHint() @ce
|
|
|
|
|
parameter is deprecated, use @cpp Buffer::TargetHint @ce instead.
|
|
|
|
|
- The @cpp SceneGraph::TransformationType @ce enum is depracted, use separate
|
|
|
|
|
`<transform>()` and `<transform>Local()` variants instead.
|
|
|
|
|
- @cpp SceneGraph::AbstractObject::hasFeatures() @ce, @cpp firstFeature() @ce,
|
|
|
|
|
@cpp lastFeature() @ce, @cpp SceneGraph::Object::hasChildren() @ce,
|
|
|
|
|
@cpp firstChild() @ce and @cpp lastChild() @ce are deprecated, use methods on
|
|
|
|
|
linked list returned by @ref SceneGraph::AbstractObject::features() and
|
|
|
|
|
@ref SceneGraph::Object::children() instead.
|
|
|
|
|
- @cpp Platform::ScreenedApplication::frontScreen() @ce and
|
|
|
|
|
@cpp Platform::ScreenedApplication::backScreen() @ce are deprecated, use
|
|
|
|
|
methods on linked list returned by
|
|
|
|
|
@ref Platform::BasicScreenedApplication::screens() "Platform::ScreenedApplication::screens()"
|
|
|
|
|
instead.
|
|
|
|
|
- @cpp *Framebuffer::read() @ce functions taking two vectors are deprecated,
|
|
|
|
|
use overload taking @ref Range2Di instead.
|
|
|
|
|
- The @cpp Mesh::maxVertexAttributes() @ce function is deprecated, use
|
|
|
|
|
@cpp AbstractShaderProgram::maxVertexAttributes() @ce instead.
|
|
|
|
|
- @cpp Math::Vector::dot() @ce, @cpp Math::Complex::dot() @ce,
|
|
|
|
|
@cpp Math::Quaternion::dot() @ce, @cpp Math::Vector::angle() @ce,
|
|
|
|
|
@cpp Math::Complex::angle() @ce, @cpp Math::Quaternion::angle() @ce,
|
|
|
|
|
@cpp Math::Quaternion::lerp() @ce, @cpp Math::Quaternion::slerp() @ce,
|
|
|
|
|
@cpp Math::Vector2::cross() @ce and @cpp Math::Vector3::cross() @ce are
|
|
|
|
|
deprecated, use @ref Math::dot(), @ref Math::angle(),
|
|
|
|
|
@ref Math::lerp(), @ref Math::slerp() and @ref Math::cross() instead (see
|
|
|
|
|
[mosra/magnum#74](https://github.com/mosra/magnum/issues/74))
|
|
|
|
|
- The @cpp *Framebuffer::bind(FramebufferTarget) @ce function is deprecated,
|
|
|
|
|
use parameter-less @cpp *Framebuffer::bind() @ce instead.
|
|
|
|
|
- The @cpp FramebufferTarget::ReadDraw @ce enum value is deprecated, use
|
|
|
|
|
separate @cpp FramebufferTarget::Read @ce and @cpp FramebufferTarget::Draw @ce
|
|
|
|
|
values instead.
|
|
|
|
|
- @cpp CubeMapTexture::imageSize() @ce with explicit face parameter is
|
|
|
|
|
deprecated, use overload that returns one value for all faces instead.
|
|
|
|
|
- The `Magnum/DebugMessage.h` header is deprecated, use
|
|
|
|
|
`Magnum/DebugOutput.h` instead (see
|
|
|
|
|
[mosra/magnum#89](https://github.com/mosra/magnum/pull/89))
|
|
|
|
|
- The @cpp DebugMessage::Severity @ce enum is deprecated, use
|
|
|
|
|
@cpp DebugOutput::Severity @ce instead.
|
|
|
|
|
- The @cpp DebugMessage::Callback @ce typedef, @cpp DebugMessage::setCallback() @ce
|
|
|
|
|
and @cpp DebugMessage::setDefaultCallback() @ce function is deprecated, use
|
|
|
|
|
@cpp DebugOutput::Callback @ce, @cpp DebugOutput::setCallback() @ce and
|
|
|
|
|
@cpp DebugOutput::setDefaultCallback() @ce instead.
|
|
|
|
|
- The @cpp DebugMessage::maxLoggedMessages() @ce and
|
|
|
|
|
@cpp DebugMessage::maxMessageLength() @ce functions are deprecated, use
|
|
|
|
|
@cpp DebugOutput::maxLoggedMessages() @ce and
|
|
|
|
|
@cpp DebugOutput::maxMessageLength() @ce instead.
|
|
|
|
|
- The @cpp DebugMessage::setEnabled() @ce function and related values from
|
|
|
|
|
@cpp DebugMessage::Source @ce enum are deprecated, use
|
|
|
|
|
@cpp DebugOutput::setEnabled() @ce along with @cpp DebugOutput::Source @ce,
|
|
|
|
|
@cpp DebugOutput::Type @ce and @cpp DebugOutput::Severity @ce instead.
|
|
|
|
|
- Parameter-less @cpp *Query @ce constructor and parametrized
|
|
|
|
|
@cpp *Query::begin() @ce function are deprecated, use constructor with
|
|
|
|
|
parameter and parameter-less @cpp *Query::begin() @ce instead.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-compatibility Potential compatibility breakages, removed APIs
|
|
|
|
|
|
|
|
|
|
- All functionality @ref changelog-2014-01-deprecated "deprecated in 2014.01"
|
|
|
|
|
has been removed, namely:
|
|
|
|
|
- Removed deprecated ability to use relative includes (e.g.
|
|
|
|
|
@cpp #include <Mesh.h> @ce), use absolute paths (@cpp #include <Magnum/Mesh.h> @ce)
|
|
|
|
|
instead.
|
|
|
|
|
- Removed deprecated @cpp Mesh::Primitive @ce enum, use @cpp MeshPrimitive @ce
|
|
|
|
|
instead.
|
|
|
|
|
- Removed deprecated @cpp Sampler::maxAnisotropy() @ce function, use
|
|
|
|
|
@cpp Sampler::maxMaxAnisotropy() @ce instead.
|
|
|
|
|
- Removed deprecated @cpp Math::Geometry::Rectangle @ce class, use
|
|
|
|
|
@ref Math::Range instead.
|
|
|
|
|
- Removed deprecated @cpp SceneGraph::Animable::group() @ce function, use
|
|
|
|
|
@ref SceneGraph::Animable::animables() instead.
|
|
|
|
|
- Removed deprecated `Shaders/magnumShadersResourceImport.hpp` file, use
|
|
|
|
|
`Shaders/resourceImport.hpp` instead.
|
|
|
|
|
- Removed deprecated @cpp Text::TextRenderer @ce alias, use
|
|
|
|
|
@cpp Text::Renderer @ce instead.
|
|
|
|
|
- Removed long-deprecated @cpp BufferImage::setData() @ce overload, use
|
|
|
|
|
the other one instead.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2015-05-performance Performance improvements
|
|
|
|
|
|
|
|
|
|
- Faster vector multiplication in @ref Math::Quaternion.
|
|
|
|
|
- Saved one swizzle in @ref Math::cross().
|
|
|
|
|
- Allocation-free overloads of functions that took @cpp std::string @ce just to
|
|
|
|
|
pass its contents to OpenGL.
|
|
|
|
|
|
|
|
|
|
@section changelog-2014-06 2014.06
|
|
|
|
|
|
|
|
|
|
Released 2014-06-30, tagged as
|
|
|
|
|
[v2014.06](https://github.com/mosra/magnum/releases/tag/v2014.06). See the
|
|
|
|
|
[release announcement](https://blog.magnum.graphics/announcements/june-2014-updates/)
|
|
|
|
|
for a high-level overview.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-dependencies Dependency changes
|
|
|
|
|
|
|
|
|
|
- Minimal required GCC version is now 4.7. Support for GCC 4.6 has been moved
|
|
|
|
|
to `compatibility` branch (see [mosra/magnum#18](https://github.com/mosra/magnum/issues/18))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-new New features
|
|
|
|
|
|
|
|
|
|
- Experimental Android support, see @ref building-cross-android "building documentation"
|
|
|
|
|
for more information
|
|
|
|
|
- Initial implementation of @ref Platform::AndroidApplication class
|
|
|
|
|
- @ref Platform::WindowlessWglApplication and @ref Platform::WindowlessCglApplication,
|
|
|
|
|
which enable @ref magnum-gl-info "magnum-info", @ref magnum-distancefieldconverter
|
|
|
|
|
and @ref magnum-fontconverter utilities on OS X and Windows. See
|
|
|
|
|
[mosra/magnum#40](https://github.com/mosra/magnum/issues/40) and
|
|
|
|
|
[mosra/magnum#59](https://github.com/mosra/magnum/pull/59).
|
|
|
|
|
- @ref Trade::ObjImporter "ObjImporter" plugin, mesh import only (no
|
|
|
|
|
materials yet)
|
|
|
|
|
- Completed support of @gl_extension{EXT,texture_integer},
|
|
|
|
|
@gl_extension{ARB,stencil_texturing}, @gl_extension{ARB,texture_rectangle},
|
|
|
|
|
@gl_extension{ARB,texture_buffer_object}, @gl_extension{ARB,texture_swizzle},
|
|
|
|
|
@gl_extension{EXT,texture_sRGB_decode} extensions (and related ES extensions) and
|
|
|
|
|
other missing parameters in @cpp *Texture @ce classes
|
|
|
|
|
- Basic support for @gl_extension{ARB,texture_multisample} and
|
|
|
|
|
@gl_extension{ARB,texture_storage_multisample} in new @cpp MultisampleTexture @ce
|
|
|
|
|
class
|
|
|
|
|
- Instanced rendering, base vertex and base instance specification in
|
|
|
|
|
@cpp Mesh @ce and @cpp MeshView @ce classes; @cpp Mesh::addVertexBufferInstanced() @ce
|
|
|
|
|
function for adding buffers with per-instance data (see
|
|
|
|
|
[mosra/magnum#47](https://github.com/mosra/magnum/issues/47))
|
|
|
|
|
- Mesh multi-draw using @cpp MeshView::draw() @ce
|
|
|
|
|
- Initial @gl_extension{ARB,multi_bind} support with @cpp AbstractTexture::bind() @ce
|
|
|
|
|
- Support for @gl_extension{ARB,vertex_type_10f_11f_11f_rev} in
|
|
|
|
|
@cpp AbstractShaderProgram::Attribute::DataType @ce
|
|
|
|
|
- New variants of @cpp Shader::compile() @ce and @cpp AbstractShaderProgram::link() @ce,
|
|
|
|
|
allowing the driver to perform parallel compilation in multiple threads.
|
|
|
|
|
- Added @cpp *Texture::maxSize() @ce queries
|
|
|
|
|
- @ref MeshTools::compile() for automagic creation of 2D and 3D meshes from
|
|
|
|
|
imported data
|
|
|
|
|
- @ref MeshTools::interleaveInto() for interleaving data into existing
|
|
|
|
|
buffer
|
|
|
|
|
- `Shapes::Shape::collision()` function as complement to
|
|
|
|
|
`Shapes::Shape::collides()`
|
|
|
|
|
- `Platform::GlutApplication::KeyEvent` finally has more complete key support
|
|
|
|
|
- @ref Math::Range::data() function, useful when querying range values from
|
|
|
|
|
GL
|
|
|
|
|
- Support for specifying context flags using
|
|
|
|
|
@cpp Platform::*Application::Configuration::setFlags() @ce, they are now
|
|
|
|
|
also shown in @ref magnum-gl-info "magnum-info"
|
|
|
|
|
- More robust support for driver detection and driver bug workarounds. Driver
|
|
|
|
|
can be detected using @cpp Context::detectedDriver() @ce, problematic
|
|
|
|
|
extension disabled, which is then shown in @ref magnum-gl-info "magnum-info"
|
|
|
|
|
and can be also queried using @cpp Context::isExtensionDisabled() @ce
|
|
|
|
|
- @cpp Context::extensionStrings() @ce for getting list of all extension
|
|
|
|
|
strings exposed by the driver
|
|
|
|
|
- @cpp Context::resetState() @ce for resetting internal state tracker,
|
|
|
|
|
allowing to use Magnum along with third-party OpenGL code (see
|
|
|
|
|
[mosra/magnum#48](https://github.com/mosra/magnum/issues/48))
|
|
|
|
|
- @ref MAGNUM_TARGET_WEBGL CMake and preprocessor variable
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-changes Changes
|
|
|
|
|
|
|
|
|
|
- Libraries and plugins in debug build configuration are installed to
|
|
|
|
|
different locations, making it possible to have debug and release libraries
|
|
|
|
|
installed alongside each other (see
|
|
|
|
|
[mosra/magnum#20](https://github.com/mosra/magnum/issues/20),
|
|
|
|
|
[mosra/magnum#45](https://github.com/mosra/magnum/issues/18))
|
|
|
|
|
- @ref Platform::Sdl2Application is now used everywhere (documentation,
|
|
|
|
|
tutorials, examples) by default, replacing `Platform::GlutApplication`. The
|
|
|
|
|
GLUT application is still available, though. See
|
|
|
|
|
[mosra/magnum#39](https://github.com/mosra/magnum/issues/39).
|
|
|
|
|
- The need for compiler compatibility mode is now automatically detected by
|
|
|
|
|
CMake to avoid strange compilation errors later
|
|
|
|
|
- Split out @cpp Texture @ce functionality into dedicated @cpp TextureArray @ce,
|
|
|
|
|
@cpp MultisampleTexture @ce and @cpp RectangleTexture @ce classes to make
|
|
|
|
|
their usage less error-prone
|
|
|
|
|
- @cpp Buffer::invalidateData() @ce, @cpp Buffer::invalidateSubData() @ce and
|
|
|
|
|
@cpp Renderer::resetNotificationStrategy() @ce functions are enabled on
|
|
|
|
|
OpenGL ES as a no-op
|
|
|
|
|
- Added @ref std::vector overload of @cpp MeshTools::combineIndexArrays() @ce
|
|
|
|
|
for greater runtime-usage flexibility
|
|
|
|
|
- @ref Platform::Sdl2Application now defaults to non-resizable window, you
|
|
|
|
|
can change the behavior using @ref Platform::Sdl2Application::Configuration::setWindowFlags()
|
|
|
|
|
- It's now possible to import objects without materials
|
|
|
|
|
- More robust OpenGL version checks when creating context
|
|
|
|
|
- Thorough documentation review, fixes and improvements
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-buildsystem Build system
|
|
|
|
|
|
|
|
|
|
- Avoiding unnecessary linking of the OpenGL library (see
|
|
|
|
|
[mosra/magnum#60](https://github.com/mosra/magnum/pull/60))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Fixed usage with OpenGL ES 3.1 contexts (it complained about invalid
|
|
|
|
|
version)
|
|
|
|
|
- Fixed compilation of @cpp Shaders::MeshVisualizer @ce under WebGL and with
|
|
|
|
|
ANGLE, see [mosra/magnum#56](https://github.com/mosra/magnum/issues/56)
|
|
|
|
|
- Fixed various build issues on Mac OS X, see
|
|
|
|
|
[mosra/magnum#51](https://github.com/mosra/magnum/issues/51) and
|
|
|
|
|
[mosra/magnum#54](https://github.com/mosra/magnum/issues/54)
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-deprecated Deprecated APIs
|
|
|
|
|
|
|
|
|
|
- @cpp Mesh::setVertexCount() @ce and @cpp Mesh::setIndexCount() @ce had
|
|
|
|
|
nonintuitive behavior in some corner cases and are deprecated, use general
|
|
|
|
|
@cpp Mesh::setCount() @ce function instead
|
|
|
|
|
- @cpp MeshView::setVertexRange() @ce and four-/two-argument
|
|
|
|
|
@cpp MeshView::setIndexRange() @ce are deprecated for similar reason as
|
|
|
|
|
above, use @cpp MeshView::setCount() @ce, @cpp MeshView::setBaseVertex() @ce
|
|
|
|
|
and three-/one-argument @cpp MeshView::setIndexRange() @ce instead
|
|
|
|
|
- @cpp Texture::Target @ce enum is deprecated as the API was too error-prone,
|
|
|
|
|
use dedicated @cpp TextureArray @ce, @cpp MultisampleTexture @ce and
|
|
|
|
|
@cpp RectangleTexture @ce classes instead
|
|
|
|
|
- @cpp Framebuffer::attachTexture*D() @ce is deprecated, use more generic
|
|
|
|
|
@cpp Framebuffer::attachTexture() @ce and
|
|
|
|
|
@cpp Framebuffer::attachTextureLayer() @ce instead
|
|
|
|
|
- @cpp FramebufferBlit::*Buffer @ce enum values are deprecated, use shorter
|
|
|
|
|
@cpp FramebufferBlit::Color @ce and similar instead
|
|
|
|
|
- @ref Audio::Source::play(), @ref SceneGraph::AbstractObject::setClean(),
|
|
|
|
|
@ref SceneGraph::AbstractObject::transformationMatrices() and similar
|
|
|
|
|
taking @ref std::initializer_list of pointers are deprecated, use versions
|
|
|
|
|
taking list of references instead
|
|
|
|
|
- @ref MeshTools::compressIndices() and @ref MeshTools::interleave()
|
|
|
|
|
which filled @cpp Mesh @ce and @cpp Buffer @ce directly are deprecated as
|
|
|
|
|
they had undesired side-effects in some cases, use the data-returning
|
|
|
|
|
versions instead and then configure mesh and buffer manually
|
|
|
|
|
- @cpp MeshTools::combineIndexedArrays() @ce taking @ref std::tuple is
|
|
|
|
|
deprecated, use version taking @ref std::pair instead
|
|
|
|
|
- @cpp MeshTools::removeDuplicates() @ce taking also list of indices is
|
|
|
|
|
deprecated, use the function in conjunction with @ref MeshTools::duplicate().
|
|
|
|
|
See function documentation for more information.
|
|
|
|
|
- Parameter-less @cpp Mesh::draw() @ce and @cpp MeshView::draw() @ce are
|
|
|
|
|
deprecated, use versions with explicit shader parameter instead
|
|
|
|
|
- Deprecated implicit conversion of @ref Resource "Resource<T, U>" to
|
|
|
|
|
@cpp U& @ce, as it is not safe. Use explicit dereference operator instead.
|
|
|
|
|
- Texture binding using @cpp *Texture::bind() @ce is deprecated, use setup
|
|
|
|
|
functions of particular shaders instead (e.g.
|
|
|
|
|
@cpp Shaders::Phong::setDiffuseTexture() @ce)
|
|
|
|
|
- @cpp Context::Flag::Robustness @ce is deprecated, use
|
|
|
|
|
@cpp Context::Flag::RobustAccess @ce which reflects OpenGL naming better
|
|
|
|
|
instead
|
|
|
|
|
- @cpp Texture::maxLayers() @ce has misleading naming and is deprecated, use
|
|
|
|
|
@cpp Shader::maxCombinedTextureImageUnits() @ce instead
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-compatibility Potential compatibility breakages, removed APIs
|
|
|
|
|
|
|
|
|
|
- All functionality @ref changelog-2013-10-deprecated "deprecated in 2013.10"
|
|
|
|
|
has been removed, namely:
|
|
|
|
|
- Removed deprecated raw-pointer versions of @cpp Buffer::setData() @ce
|
|
|
|
|
and @cpp Buffer::setSubData() @ce, use overloads taking
|
|
|
|
|
@cpp Containers::ArrayReference @ce instead
|
|
|
|
|
- Removed deprecated `Magnum/ImageFormat.h` header and
|
|
|
|
|
@cpp ImageFormat @ce/@cpp ImageType @ce enums, use `Magnum/ColorFormat.h`
|
|
|
|
|
header and @cpp ColorFormat @ce/@cpp ColorType @ce enums instead
|
|
|
|
|
- Removed deprecated @cpp Matrix2 @ce and @cpp Matrix2d @ce typedefs, use
|
|
|
|
|
@ref Matrix2x2 and @ref Matrix2x2d instead
|
|
|
|
|
- Removed deprecated `Magnum/Swizzle.h` header and @cpp Magnum::swizzle() @ce
|
|
|
|
|
function, use @ref Magnum/Math/Swizzle.h and @cpp Math::swizzle() @ce
|
|
|
|
|
instead
|
|
|
|
|
- Removed deprecated @cpp *::maxSupported*() @ce limit queries, use the
|
|
|
|
|
less verbose @cpp *::max*() @ce versions instead
|
|
|
|
|
- Removed deprecated @cpp Platform::*Application::InputEvent::Modifier::*Button @ce
|
|
|
|
|
enum values, use @ref Platform::Sdl2Application::MouseMoveEvent::buttons() "Platform::*Application::*Event::buttons()"
|
|
|
|
|
function and @ref Platform::Sdl2Application::MouseMoveEvent::Button "Platform::*Application::*Event::Button"
|
|
|
|
|
enum instead
|
|
|
|
|
- @cpp Platform::Sdl2Application::Configuration::Flag @ce enum and related
|
|
|
|
|
functions were replaced with WindowFlag, as the name would now conflict
|
|
|
|
|
with context flags
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-06-internal Internal changes
|
|
|
|
|
|
|
|
|
|
- Removed last remaining bits of global state, everything is now stored
|
|
|
|
|
per-context.
|
|
|
|
|
|
|
|
|
|
@section changelog-2014-01 2014.01
|
|
|
|
|
|
|
|
|
|
Released 2014-01-21, tagged as
|
|
|
|
|
[v2014.01](https://github.com/mosra/magnum/releases/tag/v2014.01). See the
|
|
|
|
|
[release announcement](https://blog.magnum.graphics/announcements/january-2014-updates/)
|
|
|
|
|
for a high-level overview.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-dependencies Dependency changes
|
|
|
|
|
|
|
|
|
|
No dependency changes in this release.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-new New features
|
|
|
|
|
|
|
|
|
|
- MSVC 2013 support in `compatibility` branch
|
|
|
|
|
- Dependency-less plugins from Magnum Plugins repository are now part of
|
|
|
|
|
Magnum to make their usage easier, in particular the @ref Text::MagnumFont "MagnumFont",
|
|
|
|
|
@ref Text::MagnumFontConverter "MagnumFontConverter",
|
|
|
|
|
@ref Trade::TgaImporter "TgaImporter", @ref Trade::TgaImageConverter "TgaImageConverter"
|
|
|
|
|
and @ref Audio::WavImporter "WavAudioImporter" plugins.
|
|
|
|
|
- Documented @ref opengl-support "state of OpenGL support",
|
|
|
|
|
@ref opengl-mapping "mapping between OpenGL and Magnum API",
|
|
|
|
|
@ref plugins "general plugin usage" and added
|
|
|
|
|
@ref troubleshooting "troubleshooting page" for most common building and
|
|
|
|
|
rendering issues
|
|
|
|
|
- Support for horizontal and vertical text alignment and multi-line text in
|
|
|
|
|
@cpp Text::Renderer @ce (line wrapping is still left up to the user)
|
|
|
|
|
- New @ref magnum-fontconverter utility for converting between font formats
|
|
|
|
|
(e.g. creating distance-field raster font from TTF font). Enable it with
|
|
|
|
|
`WITH_FONTCONVERTER` CMake option (currently Linux only), see
|
|
|
|
|
`magnum-fontconverter --help` for more information.
|
|
|
|
|
- Support for OpenGL object labels, debug message insertion and retrieval
|
|
|
|
|
(@gl_extension{KHR,debug}, @gl_extension{EXT,debug_label} and @gl_extension{EXT,debug_marker}
|
|
|
|
|
extensions) (see [mosra/magnum#42](https://github.com/mosra/magnum/issues/42))
|
|
|
|
|
- @ref Platform::BasicScreenedApplication "Platform::ScreenedApplication"
|
|
|
|
|
class allowing the users to easily use multiple independent screens in the
|
|
|
|
|
application.
|
|
|
|
|
- New 1D, 2D and 3D @ref Math::Range class
|
|
|
|
|
- Added @cpp red() @ce, @cpp green() @ce, @cpp blue() @ce, @cpp cyan() @ce,
|
|
|
|
|
@cpp magenta() @ce and @cpp yellow() @ce convenience functions to @ref Color3
|
|
|
|
|
and @ref Color4 classes
|
|
|
|
|
- Convenience @ref Color3ub and @ref Color4ub typedefs
|
|
|
|
|
- New @cpp version() @ce utility functions for converting @cpp Version @ce
|
|
|
|
|
enum value to major/minor version number and back
|
|
|
|
|
- Added @cpp release() @ce function to @ref Image and @ref Trade::ImageData
|
|
|
|
|
for releasing ownership of the data, similar to @ref std::unique_ptr::release()
|
|
|
|
|
(see [mosra/magnum#29](https://github.com/mosra/magnum/issues/29))
|
|
|
|
|
- @cpp *Image::dataSize() @ce function for computing size of buffer required
|
|
|
|
|
to store image of given size
|
|
|
|
|
- Disallowing conversion of rvalue @ref Image and @ref Trade::ImageData
|
|
|
|
|
to ImageReference as it would result in access to deleted memory (GCC
|
|
|
|
|
4.8.1/Clang only)
|
|
|
|
|
- No-op fallback for @cpp *Texture::setMaxAnisotropy() @ce in case
|
|
|
|
|
@gl_extension{EXT,texture_filter_anisotropic extension} is not supported
|
|
|
|
|
- Added @cpp round() @ce, @cpp floor() @ce and @cpp ceil() @ce scalar/vector
|
|
|
|
|
functions to @ref Math namespace
|
|
|
|
|
- @ref Math::minmax() and @ref Math::Vector2::minmax() functions
|
|
|
|
|
- Modulo operations for integral @ref Math::Vector classes
|
|
|
|
|
- Ability to request context version in all windowed
|
|
|
|
|
@ref Platform::Sdl2Application "Platform::*Application" classes
|
|
|
|
|
- Mouse wheel support in @cpp Platform::NaClApplication::MouseEvent @ce
|
|
|
|
|
- No-op `Platform::GlutApplication::keyReleaseEvent()` and
|
|
|
|
|
@cpp Platform::NaClApplication::Configuration::setTitle() @ce functions to
|
|
|
|
|
preserve source compatibility with other application classes.
|
|
|
|
|
- @ref SceneGraph::Drawable::drawables() function as a non-ambiguous
|
|
|
|
|
alternative to @cpp group() @ce
|
|
|
|
|
- Ability to specify background color color in @cpp Shaders::Vector @ce,
|
|
|
|
|
allowing it to use without blending enabled (fully transparent black was
|
|
|
|
|
used previously)
|
|
|
|
|
- New @cpp Shaders::Generic @ce class with common definitions, so you can
|
|
|
|
|
configure mesh for the generic shader and render it with any other
|
|
|
|
|
compatible shader
|
|
|
|
|
- Convenience @cpp hasNormals() @ce, @cpp hasTextureCoords2D() @ce functions
|
|
|
|
|
in @cpp Trade::MeshData2D @ce and @cpp Trade::MeshData3D @ce
|
|
|
|
|
- OpenGL ES 3.0 build now shares list of vendor extensions with OpenGL ES 2.0
|
|
|
|
|
build (i.e. only those extensions that aren't part of ES 3.0 are present in
|
|
|
|
|
@cpp Extensions @ce)
|
|
|
|
|
- All classes in documentation are now shown with corresponding @cpp #include @ce
|
|
|
|
|
path
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-changes Changes
|
|
|
|
|
|
|
|
|
|
- Preferring absolute includes instead of relative (see [mosra/magnum#36](https://github.com/mosra/magnum/issues/36))
|
|
|
|
|
- The `magnum-distancefield` utility is now named @ref magnum-distancefieldconverter
|
|
|
|
|
for consistency with other command-line utilities
|
|
|
|
|
- @cpp ImageReference @ce class now stores const data pointer instead of
|
|
|
|
|
mutable one, modifying the data through the class interface isn't valid use
|
|
|
|
|
case anyway
|
|
|
|
|
- Added default template parameter to @cpp Buffer::data() @ce and made
|
|
|
|
|
@ref Image::data() "*Image::data()" templated to have them consistent.
|
|
|
|
|
Note that this is source-compatible change.
|
|
|
|
|
- @cpp Query::result<bool>() @ce returns @cpp true @ce if value is nonzero
|
|
|
|
|
(was returning @cpp true @ce only for value of 1 previously)
|
|
|
|
|
- All functions in @ref MeshTools namespace are now returning either
|
|
|
|
|
@ref Corrade::Containers::Array or @ref std::unique_ptr instead of naked
|
|
|
|
|
pointers to avoid accidental out-of-bounds access and memory leaks
|
|
|
|
|
- All functions in @ref Text namespace are now returning @ref std::unique_ptr
|
|
|
|
|
instead of naked pointers to avoid accidental memory leaks
|
|
|
|
|
- Implementation of @ref Platform::Sdl2Application::viewportEvent() "Platform::*Application::viewportEvent()"
|
|
|
|
|
is not required anymore, because in many cases the application doesn't need
|
|
|
|
|
to react to window resize events at all
|
|
|
|
|
- Textured @cpp Shaders::Flat @ce now multiplies texture with the specified
|
|
|
|
|
color instead of ignoring it. See also [mosra/magnum#34](https://github.com/mosra/magnum/issues/34)
|
|
|
|
|
- All deprecated functions and types are now emitting compiler warnings to
|
|
|
|
|
encourage updating the code
|
|
|
|
|
- Various documentation and example updates and improvements
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Fixed @cpp CubeMapTextureArray::image() @ce function (more precisely it
|
|
|
|
|
wasn't working at all). See also [mosra/magnum#31](https://github.com/mosra/magnum/issues/31).
|
|
|
|
|
- Fixed wrong assertion in @cpp Texture::setWrapping() @ce for rectangle
|
|
|
|
|
textures
|
|
|
|
|
- Fixed wrong assertion in @cpp AbstractImage::pixelSize() @ce when computing
|
|
|
|
|
size of separate depth and stencil formats
|
|
|
|
|
- @cpp Mesh::addVertexBuffer() @ce now properly computes offsets for matrix
|
|
|
|
|
attributes
|
|
|
|
|
- Taking index buffer offset into account in @cpp MeshView @ce class
|
|
|
|
|
- Fixed various issues with textured @cpp Shaders::Flat @ce shader (actually
|
|
|
|
|
the textured version was not working at all)
|
|
|
|
|
- Various OS X-related fixes in @ref Shaders library. See also
|
|
|
|
|
[mosra/magnum#27](https://github.com/mosra/magnum/issues/27).
|
|
|
|
|
- Fixed building issues when both SDL1 and SDL2 is installed on OS X. See
|
|
|
|
|
also [mosra/magnum#25](https://github.com/mosra/magnum/issues/25),
|
|
|
|
|
[mosra/magnum#38](https://github.com/mosra/magnum/pull/38).
|
|
|
|
|
- Fixed building issues with CMake-generated XCode project on OS X. See also
|
|
|
|
|
[mosra/magnum#37](https://github.com/mosra/magnum/issues/37).
|
|
|
|
|
- Proper and failsafe OpenGL 3 context creation on OS X (3.0 is implemented
|
|
|
|
|
only as core context, thus requesting 2.1 won't expose newer features). See
|
|
|
|
|
also [mosra/magnum#26](https://github.com/mosra/magnum/issues/26),
|
|
|
|
|
[mosra/magnum#35](https://github.com/mosra/magnum/issues/35) and
|
|
|
|
|
[mosra/magnum#43](https://github.com/mosra/magnum/pull/43).
|
|
|
|
|
- Fixed compilation issues with Clang and libc++
|
|
|
|
|
- Fixed various compilation issues under MSVC (and worked around an insane
|
|
|
|
|
amount of compiler bugs)
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-deprecated Deprecated APIs
|
|
|
|
|
|
|
|
|
|
- @cpp Buffer::Usage @ce enum is deprecated to reduce header dependencies,
|
|
|
|
|
use global @cpp BufferUsage @ce enum instead
|
|
|
|
|
- @cpp Mesh::Primitive @ce enum is deprecated to reduce header dependencies,
|
|
|
|
|
use global @cpp MeshPrimitive @ce enum instead
|
|
|
|
|
- @cpp Sampler::maxAnisotropy() @ce is deprecated to avoid naming conflict with
|
|
|
|
|
@cpp *Texture::setMaxAnisotropy() @ce, use
|
|
|
|
|
@cpp Sampler::maxMaxAnisotropy() @ce instead
|
|
|
|
|
- @cpp Magnum::Geometry::Rectangle @ce class (and @cpp Rectangle* @ce typedefs)
|
|
|
|
|
is deprecated, use more generic and feature-rich @ref Math::Range
|
|
|
|
|
instead.
|
|
|
|
|
- @cpp Platform::Sdl2Application::Configuration::setFlags() @ce function and
|
|
|
|
|
related enum is deprecated to avoid naming conflict in the future, use @ref Platform::Sdl2Application::Configuration::setWindowFlags() instead
|
|
|
|
|
- @cpp SceneGraph::Animable::group() @ce is deprecated, use non-ambiguous
|
|
|
|
|
@ref SceneGraph::Animable::animables() instead
|
|
|
|
|
- `Magnum/Shaders/magnumShadersResourceImport.hpp` header is deprecated in
|
|
|
|
|
favor of less verbose `Magnum/Shaders/resourceImport.hpp`
|
|
|
|
|
- @cpp Text::TextRenderer @ce class (and @cpp Text::TextRenderer2D @ce,
|
|
|
|
|
@cpp Text::TextRenderer3D @ce typedefs) is deprecated, use less redundant
|
|
|
|
|
name @cpp Text::Renderer @ce instead
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-compatibility Potential compatibility breakages, removed APIs
|
|
|
|
|
|
|
|
|
|
- Removed @cpp SceneGraph::*Transformation::move() @ce from 2D transformation
|
|
|
|
|
classes. It was originally meant for modifying draw order, but as the draw
|
|
|
|
|
order is managed by @ref SceneGraph::DrawableGroup class and not by
|
|
|
|
|
parent object, this function is essentially useless.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-documentation Documentation
|
|
|
|
|
|
|
|
|
|
- Various documentation updates and fixes (see
|
|
|
|
|
[mosra/magnum#28](https://github.com/mosra/magnum/issues/28))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2014-01-internal Internal changes
|
|
|
|
|
|
|
|
|
|
- Added thorough tests for all core OpenGL functionality to make refactoring
|
|
|
|
|
easier
|
|
|
|
|
- Various internal optimizations and cleanup to make maintenance easier
|
|
|
|
|
- Using Jenkins Continuous Integration to maintain compilable and bug-free
|
|
|
|
|
state of the project more easily. Currently GCC 4.8, 4.7, 4.6, 4.5, 4.4,
|
|
|
|
|
Clang 3.3, Clang 3.3 with libc++, Emscripten, x86-32/x86-64 Native Client
|
|
|
|
|
and MinGW32 compilers are tested with both shared and static libraries.
|
|
|
|
|
Separately testing builds with deprecated features enabled and disabled.
|
|
|
|
|
Also explicitly testing desktop OpenGL, OpenGL ES 2.0, desktop OpenGL ES
|
|
|
|
|
2.0 emulation, OpenGL ES 3.0 and desktop OpenGL ES 3.0 emulation.
|
|
|
|
|
- All files from `src/` directory were moved to `src/Magnum`,
|
|
|
|
|
`external/` directory was moved to `src/MagnumExternal` (required to
|
|
|
|
|
make inter-project includes absolute, as mentioned above)
|
|
|
|
|
|
|
|
|
|
@section changelog-2013-10 2013.10
|
|
|
|
|
|
|
|
|
|
Released 2013-10-30, tagged as
|
|
|
|
|
[v2013.10](https://github.com/mosra/magnum/releases/tag/v2013.10). See the
|
|
|
|
|
[release announcement](https://blog.magnum.graphics/announcements/october-2013-updates/)
|
|
|
|
|
for a high-level overview.
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-dependencies Dependency changes
|
|
|
|
|
|
|
|
|
|
- Removed GLEW dependency in favor of built-in `glLoadGen`, resulting in
|
|
|
|
|
greatly reduced compilation time and less compatibility issues. The base
|
|
|
|
|
library thus now depends only on Corrade and OpenGL libraries. See
|
|
|
|
|
[mosra/magnum#11](https://github.com/mosra/magnum/issues/11),
|
|
|
|
|
[mosra/magnum#16](https://github.com/mosra/magnum/issues/16),
|
|
|
|
|
[mosra/magnum#21](https://github.com/mosra/magnum/issues/21),
|
|
|
|
|
[mosra/magnum#22](https://github.com/mosra/magnum/issues/22),
|
|
|
|
|
[mosra/magnum#23](https://github.com/mosra/magnum/pull/23),
|
|
|
|
|
[mosra/magnum-bootstrap#2](https://github.com/mosra/magnum-bootstrap/issues/2).
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-new New features
|
|
|
|
|
|
|
|
|
|
- Initial Emscripten (HTML5/WebGL) port. See @ref Platform::Sdl2Application
|
|
|
|
|
for detailed porting information. The @ref example-index "examples page"
|
|
|
|
|
has now links to online Emscripten demos, see also
|
|
|
|
|
[base-emscripten](https://github.com/mosra/magnum-bootstrap/tree/base-emscripten)
|
|
|
|
|
branch in Magnum Bootstrap.
|
|
|
|
|
- Mac OS X port (thanks to Miguel Martin)
|
|
|
|
|
- @ref Math::Vector::isZero() and @ref Math::Vector2::aspectRatio()
|
|
|
|
|
convenience functions
|
|
|
|
|
- Bitwise AND, OR, XOR, bit inversion and bit shift in integral
|
|
|
|
|
@ref Math::Vector classes
|
|
|
|
|
- @ref Math::Matrix4x3 "Math::MatrixMxN<T>" and
|
|
|
|
|
@ref Math::Matrix3x3 "Math::MatrixNxN<T>" template aliases for non-square
|
|
|
|
|
and non-transforming square matrices in @ref Math namespace,
|
|
|
|
|
@ref Matrix3x2 "MatrixNxN" and @ref Matrix2x2d "MatrixNxNd" typedefs for
|
|
|
|
|
@cpp float @ce and @cpp double @ce non-transforming square matrices in root
|
|
|
|
|
Magnum namespace. Note that template aliases are not present in GCC 4.6
|
|
|
|
|
builds.
|
|
|
|
|
- Limit queries for all OpenGL objects, the information is now printed also
|
|
|
|
|
by @ref magnum-gl-info "magnum-info" utility.
|
|
|
|
|
- @cpp Context::isExtensionSupported() @ce is now able to query extension
|
|
|
|
|
availability on particular GLSL version
|
|
|
|
|
- Using @ref std::unique_ptr and C++1y @ref std::optional for resources
|
|
|
|
|
returned from @ref Trade::AbstractImporter for better usability and to
|
|
|
|
|
avoid accidental memory leaks
|
|
|
|
|
- New translation-only transformation in @ref SceneGraph supporting also
|
|
|
|
|
purely integral coordinates, useful e.g. for UI or 2D platformers.
|
|
|
|
|
- Detailed collision queries and new `InvertedSphere` shape in Shapes library
|
|
|
|
|
- Texture support in @cpp Shaders::Flat @ce
|
|
|
|
|
- Mouse button queries in @ref Platform::Sdl2Application::MouseMoveEvent "Platform::*Application::MouseMoveEvent"
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-changes Changes
|
|
|
|
|
|
|
|
|
|
- @cpp Buffer::setData() @ce and @cpp Buffer::setSubData() @ce are now
|
|
|
|
|
accepting @cpp Containers::ArrayReference @ce for more convenient usage
|
|
|
|
|
- @ref Platform::Sdl2Application::viewportEvent() "Platform::*Application::viewportEvent()"
|
|
|
|
|
is not called at all if window size doesn't change, allowing for less
|
|
|
|
|
cumbersome ofscreen rendering setups
|
|
|
|
|
- Removed redundant operators from @ref Math::RectangularMatrix "Math::*Matrix",
|
|
|
|
|
use vectors for component-wise multiplication and division instead
|
|
|
|
|
- Documentation updates and improvements to make the library more accessible
|
|
|
|
|
for newcomers
|
|
|
|
|
- Various build system updates for better compile times and easier
|
|
|
|
|
installation
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-bugfixes Bug fixes
|
|
|
|
|
|
|
|
|
|
- Fixed compilation with Clang and libc++ (see
|
|
|
|
|
[mosra/magnum#12](https://github.com/mosra/magnum/issues/12))
|
|
|
|
|
- Fixes compilation of the Audio library on macOS (see
|
|
|
|
|
[mosra/magnum#19](https://github.com/mosra/magnum/issues/19))
|
|
|
|
|
- Fixed compatibility of builtin shaders with GLSL 1.20 and GLSL ES 1.00,
|
|
|
|
|
added shader compilation tests to prevent this issue from reappearing (see
|
|
|
|
|
[mosra/magnum#17](https://github.com/mosra/magnum/issues/17))
|
|
|
|
|
- Extension support queries depend on selected GLSL version (see
|
|
|
|
|
[mosra/magnum-examples#3](https://github.com/mosra/magnum-examples/issues/3))
|
|
|
|
|
- Properly exporting `SceneGraph::AbstractCamera` symbols (see
|
|
|
|
|
[mosra/magnum-bootstrap#3](https://github.com/mosra/magnum-bootstrap/issues/3))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-deprecated Deprecated APIs
|
|
|
|
|
|
|
|
|
|
- @cpp Matrix2 @ce and @cpp Matrix2d @ce is deprecated, use @ref Matrix2x2
|
|
|
|
|
and @ref Matrix2x2d instead
|
|
|
|
|
- @cpp swizzle() @ce is deprecated, all of its functionality has been moved
|
|
|
|
|
into @cpp Math::swizzle() @ce
|
|
|
|
|
- @cpp Buffer::setData() @ce and @cpp Buffer::setSubData() @ce overloads
|
|
|
|
|
taking pair of data pointer and size are deprecated, use
|
|
|
|
|
@cpp Containers::ArrayReference @ce -based @cpp Buffer::setData() @ce and
|
|
|
|
|
@cpp Buffer::setSubData() @ce
|
|
|
|
|
- `ImageFormat.h` header, @cpp ImageFormat @ce and @cpp ImageType @ce enums
|
|
|
|
|
are deprecated, use `ColorFormat.h` header, `ColorFormat` and `ColorType`
|
|
|
|
|
enums which reflect OpenGL naming better instead
|
|
|
|
|
- @cpp Platform::*Application::InputEvent::Modifier::*Button @ce enum values
|
|
|
|
|
are deprecated, use
|
|
|
|
|
@ref Platform::Sdl2Application::MouseMoveEvent::buttons() "Platform::*Application::*Event::buttons()"
|
|
|
|
|
and @ref Platform::Sdl2Application::MouseMoveEvent::Button "Platform::*Application::*Event::Button"
|
|
|
|
|
enum instead
|
|
|
|
|
- @cpp AbstractShaderProgram::maxSupportedVertexAttributeCount() @ce,
|
|
|
|
|
@cpp AbstractTexture::maxSupportedLayerCount() @ce and
|
|
|
|
|
@cpp Sampler::maxSupportedAnisotropy() @ce are deprecated in favor of less
|
|
|
|
|
verbose @cpp AbstractShaderProgram::maxVertexAttributes() @ce,
|
|
|
|
|
@cpp AbstractTexture::maxLayers() @ce and @cpp Sampler::maxAnisotropy() @ce
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-documentation Documentation
|
|
|
|
|
|
|
|
|
|
- Fixed @ref SceneGraph bootstrap branch name (see
|
|
|
|
|
[mosra/magnum-bootstrap#1](https://github.com/mosra/magnum-bootstrap/issues/1))
|
|
|
|
|
|
|
|
|
|
@subsection changelog-2013-10-compatibility Potential compatibility breakages, removed APIs
|
|
|
|
|
|
|
|
|
|
No deprecated API was removed in this release.
|
|
|
|
|
|
|
|
|
|
@section changelog-2013-08 2013.08
|
|
|
|
|
|
|
|
|
|
Released 2013-08-30, tagged as
|
|
|
|
|
[v2013.08](https://github.com/mosra/magnum/releases/tag/v2013.08). See the
|
|
|
|
|
[project announcement](https://blog.magnum.graphics/announcements/introducing-magnum/)
|
|
|
|
|
for a high-level overview.
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
}
|