Archived changelogs
See also:
2015.05
Released 2015-05-09, tagged as v2015.05. See the release announcement for a high-level overview.
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 ARB_
direct_ state_ acccess (OpenGL 4.5) everywhere except in Mesh. - Support for ARB_
conditional_ render_ inverted (OpenGL 4.5) in SampleQuery. - Support for ARB_
get_ texture_ sub_ image (OpenGL 4.5) in *Texture::subImage(). - Support for EXT_
transform_ feedback, ARB_ transform_ feedback2 (OpenGL 3.0, 4.0, OpenGL ES 3.0) in new TransformFeedbackclass, addedRenderer::Feature::RasterizerDiscard. - Support for ARB_
robustness_ isolation in Renderer::graphicsResetStatus(). - Support for ARB_
framebuffer_ sRGB (OpenGL 3.0) in Renderer::Feature::FramebufferSRGB - Support for OES_
texture_ npot ES extension. - Support for debug groups from KHR_
debug (OpenGL 4.5) and EXT_ debug_ marker extensions in DebugGroupclass.
- Support for ARB_
- Added
CubeMapTexture::*image()that returns all six faces together. - Added
Primitives::Cube::solidStrip(). - Added
AbstractShaderProgram::attachShaders()as a list-based complement toShader::compile()andAbstractShaderProgram::link(). - Separated
Renderer::setFeature()into shorterRenderer::enable()andRenderer::disable(). - Added
tau(),piHalf(),e(),nan()andinf()to Math::Constants. - Added Math::
Matrix[34]:: shearing*(). - Added Math::
Matrix4:: lookAt() (see mosra/ magnum#88). - Added Math::
Vector:: pad(). - Added Math::
div(). - Using range-based-for to traverse object children and features in SceneGraph and screens in Platform::
ScreenedApplication. - Convenience overload for
*Framebuffer::read()and*Texture::image()that returns the queried image by value instead of as parameter. - Added
Buffer::uniformOffsetAlignment()andMesh::maxElementIndex()limit queries. - Added
AbstractTexture::unbind()for unbinding range of texture units. - Added SceneGraph::
AbstractObject:: addFeature() and SceneGraph:: Object:: addChild() functions (see mosra/ magnum#86). - VSync support in Platform::
Sdl2Application. - Added
Platform::*Contextlibraries for users which want to use custom windowing toolkits instead of the ones provided. - Improved documentation about Shaders namespace, added sample image for each.
Changes
- Using flextGL instead of
glLoadGenfor OpenGL extension loading - Platform::
Sdl2Application now tries to create core context on all platforms, not just OSX (see mosra/ magnum#80). Buffer::bind(),Buffer::unbind()andBuffer::Targetis now used for indexed buffer binding only.- Moved static binary operations from Math classes into free functions for more convenient usage (see mosra/
magnum#74). - Better algorithm for comparing floating-point values.
- Ensuring that all OpenGL objects are properly created before using them.
- Using
const charinstead ofconst unsigned charfor raw binary data. - Removed annoying restriction when adding reference-counted resources to ResourceManager.
- Extension querying cleanup:
- Removed APPLE_
flush_ buffer_ range extension. - Replaced APPLE_
vertex_ array_ object with ARB_ vertex_ array_ object. - Replaced NV_
half_ float with ARB_ half_ float_ vertex. - Replaced EXT_
framebuffer_ sRGB with ARB_ framebuffer_ sRGB.
- Removed APPLE_
- Documentation cleanup, fixes and improvements.
Build system
- CMake now always installs
FindMagnum.cmaketo library-specific location, making it usable without providing own copy of the file in depending projects. TheWITH_FIND_MODULEoption is no longer needed. - CMake now handles inter-library dependencies automatically without manually specifying each and every one (see mosra/
magnum#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, mosra/ magnum#83).
Bug fixes
- Fixed TextureTools::
distanceField() to work in GLSL < 4.20 (see mosra/ magnum#62). - Fixed Shaders::
MeshVisualizer to work in GLSL ES. - Fixed Shaders::
*Vector on Intel GPUs. - Fixed assertion on contexts without default framebuffer (see mosra/
magnum#93). - Fixed cases where shader would use extension that is not advertised by the driver.
- Properly handle case where glVertexArrayVertexAttribDivisorEXT() is not available in the driver (see mosra/
magnum#77). - Removed superfluous level argument from
Framebuffer::attachTexture*()overloads for texture types that don't support mipmapping. - Proper no-op fallback for
*Framebuffer::invalidate()on platforms where the extensions is not supported (see mosra/magnum#63). - Fixed garbage characters in shader compilation output (see mosra/
magnum#87). - Fixed memory corruption on MSVC 2013 (see mosra/
magnum#70). - Fixed potential memory corruption errors with static build (see mosra/
magnum#79). - Fixed aspect-ratio-corrected projection with inverted Y in SceneGraph::
Camera*D. - Fixed wheel direction in Platform::
Sdl2Application (see mosra/ magnum#68). - Fixed bogus version check in Platform::
WindowlessCglApplication (see mosra/ magnum#92) - Fixed matrix to quaternion conversion algorithm.
- Two different headers in Primitives had the same include guard by accident (see mosra/
magnum#72) - Various compilation fixes on various platforms (see mosra/
magnum#71)
Deprecated APIs
- The
Magnum/Query.hheader is deprecated, use one ofMagnum/PrimitiveQuery.h,Magnum/SampleQuery.horMagnum/TimeQuery.hinstead. - Using
Buffer::Targetas constructor orBuffer::setTargetHint()parameter is deprecated, useBuffer::TargetHintinstead. - The
SceneGraph::TransformationTypeenum is depracted, use separate<transform>()and<transform>Local()variants instead. SceneGraph::AbstractObject::hasFeatures(),firstFeature(),lastFeature(),SceneGraph::Object::hasChildren(),firstChild()andlastChild()are deprecated, use methods on linked list returned by SceneGraph::AbstractObject:: features() and SceneGraph:: Object:: children() instead. Platform::ScreenedApplication::frontScreen()andPlatform::ScreenedApplication::backScreen()are deprecated, use methods on linked list returned by Platform::ScreenedApplication:: screens() instead. *Framebuffer::read()functions taking two vectors are deprecated, use overload taking Range2Di instead.- The
Mesh::maxVertexAttributes()function is deprecated, useAbstractShaderProgram::maxVertexAttributes()instead. Math::Vector::dot(),Math::Complex::dot(),Math::Quaternion::dot(),Math::Vector::angle(),Math::Complex::angle(),Math::Quaternion::angle(),Math::Quaternion::lerp(),Math::Quaternion::slerp(),Math::Vector2::cross()andMath::Vector3::cross()are deprecated, use Math::dot(), Math:: angle(), Math:: lerp(), Math:: slerp() and Math:: cross() instead (see mosra/ magnum#74) - The
*Framebuffer::bind(FramebufferTarget)function is deprecated, use parameter-less*Framebuffer::bind()instead. - The
FramebufferTarget::ReadDrawenum value is deprecated, use separateFramebufferTarget::ReadandFramebufferTarget::Drawvalues instead. CubeMapTexture::imageSize()with explicit face parameter is deprecated, use overload that returns one value for all faces instead.- The
Magnum/DebugMessage.hheader is deprecated, useMagnum/DebugOutput.hinstead (see mosra/magnum#89) - The
DebugMessage::Severityenum is deprecated, useDebugOutput::Severityinstead. - The
DebugMessage::Callbacktypedef,DebugMessage::setCallback()andDebugMessage::setDefaultCallback()function is deprecated, useDebugOutput::Callback,DebugOutput::setCallback()andDebugOutput::setDefaultCallback()instead. - The
DebugMessage::maxLoggedMessages()andDebugMessage::maxMessageLength()functions are deprecated, useDebugOutput::maxLoggedMessages()andDebugOutput::maxMessageLength()instead. - The
DebugMessage::setEnabled()function and related values fromDebugMessage::Sourceenum are deprecated, useDebugOutput::setEnabled()along withDebugOutput::Source,DebugOutput::TypeandDebugOutput::Severityinstead. - Parameter-less
*Queryconstructor and parametrized*Query::begin()function are deprecated, use constructor with parameter and parameter-less*Query::begin()instead.
Potential compatibility breakages, removed APIs
- All functionality deprecated in 2014.01 has been removed, namely:
- Removed deprecated ability to use relative includes (e.g.
#include <Mesh.h>), use absolute paths (#include <Magnum/Mesh.h>) instead. - Removed deprecated
Mesh::Primitiveenum, useMeshPrimitiveinstead. - Removed deprecated
Sampler::maxAnisotropy()function, useSampler::maxMaxAnisotropy()instead. - Removed deprecated
Math::Geometry::Rectangleclass, use Math::Range instead. - Removed deprecated
SceneGraph::Animable::group()function, use SceneGraph::Animable:: animables() instead. - Removed deprecated
Shaders/magnumShadersResourceImport.hppfile, useShaders/resourceImport.hppinstead. - Removed deprecated
Text::TextRendereralias, use Text::Renderer instead. - Removed long-deprecated
BufferImage::setData()overload, use the other one instead.
- Removed deprecated ability to use relative includes (e.g.
Performance improvements
- Faster vector multiplication in Math::
Quaternion. - Saved one swizzle in Math::
cross(). - Allocation-free overloads of functions that took
std::stringjust to pass its contents to OpenGL.
2014.06
Released 2014-06-30, tagged as v2014.06. See the release announcement for a high-level overview.
Dependency changes
- Minimal required GCC version is now 4.7. Support for GCC 4.6 has been moved to
compatibilitybranch (see mosra/magnum#18)
New features
- Experimental Android support, see building documentation for more information
- Initial implementation of Platform::
AndroidApplication class - Platform::
WindowlessWglApplication and Platform:: WindowlessCglApplication, which enable magnum-info, Distance Field conversion utility and Font conversion utility utilities on OS X and Windows. See mosra/ magnum#40 and mosra/ magnum#59. - ObjImporter plugin, mesh import only (no materials yet)
- Completed support of EXT_
texture_ integer, ARB_ stencil_ texturing, ARB_ texture_ rectangle, ARB_ texture_ buffer_ object, ARB_ texture_ swizzle, EXT_ texture_ sRGB_ decode extensions (and related ES extensions) and other missing parameters in *Textureclasses - Basic support for ARB_
texture_ multisample and ARB_ texture_ storage_ multisample in new MultisampleTextureclass - Instanced rendering, base vertex and base instance specification in
MeshandMeshViewclasses;Mesh::addVertexBufferInstanced()function for adding buffers with per-instance data (see mosra/magnum#47) - Mesh multi-draw using
MeshView::draw() - Initial ARB_
multi_ bind support with AbstractTexture::bind() - Support for ARB_
vertex_ type_ 10f_ 11f_ 11f_ rev in AbstractShaderProgram::Attribute::DataType - New variants of
Shader::compile()andAbstractShaderProgram::link(), allowing the driver to perform paralell compilation in multiple threads. - Added
*Texture::maxSize()queries - MeshTools::
compile() for automagic creation of 2D and 3D meshes from imported data - 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 - Math::
Range:: data() function, useful when querying range values from GL - Support for specifying context flags using
Platform::*Application::Configuration::setFlags(), they are now also shown in magnum-info - More robust support for driver detection and driver bug workarounds. Driver can be detected using
Context::detectedDriver(), problematic extension disabled, which is then shown in magnum-info and can be also queried usingContext::isExtensionDisabled() Context::extensionStrings()for getting list of all extension strings exposed by the driverContext::resetState()for resetting internal state tracker, allowing to use Magnum along with third-party OpenGL code (see mosra/magnum#48) - MAGNUM_
TARGET_ WEBGL CMake and preprocessor variable
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, mosra/ magnum#45) - 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. - The need for compiler compatibility mode is now automatically detected by CMake to avoid strange compilation errors later
- Split out
Texturefunctionality into dedicatedTextureArray,MultisampleTextureandRectangleTextureclasses to make their usage less error-prone Buffer::invalidateData(),Buffer::invalidateSubData()andRenderer::resetNotificationStrategy()functions are enabled on OpenGL ES as a no-op- Added std::
vector overload of MeshTools:: combineIndexArrays() for greater runtime-usage flexibility - Platform::
Sdl2Application now defaults to non-resizable window, you can change the behavior using 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
Build system
- Avoiding unnecessary linking of the OpenGL library (see mosra/
magnum#60)
Bug fixes
- Fixed usage with OpenGL ES 3.1 contexts (it complained about invalid version)
- Fixed compilation of Shaders::MeshVisualizer under WebGL and with ANGLE, see mosra/
magnum#56 - Fixed various build issues on Mac OS X, see mosra/
magnum#51 and mosra/ magnum#54
Deprecated APIs
Mesh::setVertexCount()andMesh::setIndexCount()had nonintuitive behavior in some corner cases and are deprecated, use generalMesh::setCount()function insteadMeshView::setVertexRange()and four-/two-argumentMeshView::setIndexRange()are deprecated for similar reason as above, useMeshView::setCount(),MeshView::setBaseVertex()and three-/one-argumentMeshView::setIndexRange()insteadTexture::Targetenum is deprecated as the API was too error-prone, use dedicatedTextureArray,MultisampleTextureandRectangleTextureclasses insteadFramebuffer::attachTexture*D()is deprecated, use more genericFramebuffer::attachTexture()andFramebuffer::attachTextureLayer()insteadFramebufferBlit::*Bufferenum values are deprecated, use shorterFramebufferBlit::Colorand similar instead- Audio::
Source:: play(), SceneGraph:: AbstractObject:: setClean(), SceneGraph:: AbstractObject:: transformationMatrices() and similar taking std:: initializer_list of pointers are deprecated, use versions taking list of references instead - MeshTools::
compressIndices() and MeshTools:: interleave() which filled MeshandBufferdirectly are deprecated as they had undesired side-effects in some cases, use the data-returning versions instead and then configure mesh and buffer manually - MeshTools::
combineIndexedArrays() taking std:: tuple is deprecated, use version taking std:: pair instead - MeshTools::
removeDuplicates() taking also list of indices is deprecated, use the function in conjunction with MeshTools:: duplicate(). See function documentation for more information. - Parameter-less
Mesh::draw()andMeshView::draw()are deprecated, use versions with explicit shader parameter instead - Deprecated implicit conversion of Resource<T, U> to
U&, as it is not safe. Use explicit dereference operator instead. - Texture binding using
*Texture::bind()is deprecated, use setup functions of particular shaders instead (e.g.Shaders::Phong::setDiffuseTexture()) Context::Flag::Robustnessis deprecated, useContext::Flag::RobustAccesswhich reflects OpenGL naming better insteadTexture::maxLayers()has misleading naming and is deprecated, useShader::maxCombinedTextureImageUnits()instead
Potential compatibility breakages, removed APIs
- All functionality deprecated in 2013.10 has been removed, namely:
- Removed deprecated raw-pointer versions of
Buffer::setData()andBuffer::setSubData(), use overloads takingContainers::ArrayReferenceinstead - Removed deprecated
Magnum/ImageFormat.hheader andImageFormat/ImageTypeenums, useMagnum/ColorFormat.hheader andColorFormat/ColorTypeenums instead - Removed deprecated
Matrix2andMatrix2dtypedefs, use :ref:Matrix2x2and :ref:Matrix2x2dinstead - Removed deprecated
Magnum/Swizzle.hheader andMagnum::swizzle()function, use Magnum/Math/ Swizzle.h and Math:: swizzle() instead - Removed deprecated
*::maxSupported*()limit queries, use the less verbose*::max*()versions instead - Removed deprecated
Platform::*Application::InputEvent::Modifier::*Buttonenum values, use Platform::*Application:: *Event:: buttons() function and Platform:: *Application:: *Event:: Button enum instead Platform::Sdl2Application::Configuration::Flagenum and related functions were replaced with WindowFlag, as the name would now conflict with context flags
- Removed deprecated raw-pointer versions of
Internal changes
- Removed last remaining bits of global state, everything is now stored per-context.
2014.01
Released 2014-01-21, tagged as v2014.01. See the release announcement for a high-level overview.
Dependency changes
No dependency changes in this release.
New features
- MSVC 2013 support in
compatibilitybranch - Dependency-less plugins from Magnum Plugins repository are now part of Magnum to make their usage easier, in particular the MagnumFont, MagnumFontConverter, TgaImporter, TgaImageConverter and WavAudioImporter plugins.
- Documented state of OpenGL support, mapping between OpenGL and Magnum API, general plugin usage and added troubleshooting page for most common building and rendering issues
- Support for horizontal and vertical text alignment and multi-line text in Text::
Renderer (line wrapping is still left up to the user) - New Font conversion utility utility for converting between font formats (e.g. creating distance-field raster font from TTF font). Enable it with
WITH_FONTCONVERTERCMake option (currently Linux only), seemagnum-fontconverter --helpfor more information. - Support for OpenGL object labels, debug message insertion and retrieval ( KHR_
debug, EXT_ debug_ label and EXT_ debug_ marker extensions) (see mosra/ magnum#42) - Platform::
ScreenedApplication class allowing the users to easily use multiple independent screens in the application. - New 1D, 2D and 3D Math::
Range class - Added
red(),green(),blue(),cyan(),magenta()andyellow()convenience functions to Color3 and Color4 classes - Convenience Color3ub and Color4ub typedefs
- New
version()utility functions for convertingVersionenum value to major/minor version number and back - Added
release()function to Image and Trade::ImageData for releasing ownership of the data, similar to std:: unique_ptr:: release() (see mosra/ magnum#29) *Image::dataSize()function for computing size of buffer required to store image of given size- Disallowing conversion of rvalue Image and Trade::
ImageData to ImageReference as it would result in access to deleted memory (GCC 4.8.1/Clang only) - No-op fallback for
*Texture::setMaxAnisotropy()in case EXT_texture_ filter_ anisotropic extension is not supported - Added
round(),floor()andceil()scalar/vector functions to Math namespace - Math::
minmax() and Math:: Vector2:: minmax() functions - Modulo operations for integral Math::
Vector classes - Ability to request context version in all windowed Platform::
*Application classes - Mouse wheel support in
Platform::NaClApplication::MouseEvent - No-op Platform::
GlutApplication:: keyReleaseEvent() and Platform::NaClApplication::Configuration::setTitle()functions to preserve source compatibility with other application classes. - SceneGraph::
Drawable:: drawables() function as a non-ambiguous alternative to group() - Ability to specify background color color in Shaders::
Vector, allowing it to use without blending enabled (fully transparent black was used previously) - New Shaders::
Generic class with common definitions, so you can configure mesh for the generic shader and render it with any other compatible shader - Convenience
hasNormals(),hasTextureCoords2D()functions to Trade::MeshData2D and Trade:: MeshData3D - OpenGL ES 3.0 build now shares list of vendor extensions with OpenGL ES 2.0 build (i.e. only those extensions that aren't part of ES 3.0 are present in
Extensions) - All classes in documentation are now shown with corresponding
#includepath
Changes
- Preferring absolute includes instead of relative (see mosra/
magnum#36) - The
magnum-distancefieldutility is now named Distance Field conversion utility for consistency with other command-line utilities ImageReferenceclass 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
Buffer::data()and made *Image::data() templated to have them consistent. Note that this is source-compatible change. Query::result<bool>()returnstrueif value is nonzero (was returningtrueonly for value of 1 previously)- All functions in MeshTools namespace are now returning either Corrade::
Containers:: Array or std:: unique_ptr instead of naked pointers to avoid accidental out-of-bounds access and memory leaks - All functions in Text namespace are now returning std::
unique_ptr instead of naked pointers to avoid accidental memory leaks - Implementation of 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 Shaders::
Flat now multiplies texture with the specified color instead of ignoring it. See also mosra/ magnum#34 - All deprecated functions and types are now emitting compiler warnings to encourage updating the code
- Various documentation and example updates and improvements
Bug fixes
- Fixed
CubeMapTextureArray::image()function (more precisely it wasn't working at all). See also mosra/magnum#31. - Fixed wrong assertion in
Texture::setWrapping()for rectangle textures - Fixed wrong assertion in
AbstractImage::pixelSize()when computing size of separate depth and stencil formats Mesh::addVertexBuffer()now properly computes offsets for matrix attributes- Taking index buffer offset into account in
MeshViewclass - Fixed various issues with textured Shaders::
Flat shader (actually the textured version was not working at all) - Various OS X-related fixes in Shaders library. See also mosra/
magnum#27. - Fixed building issues when both SDL1 and SDL2 is installed on OS X. See also mosra/
magnum#25, mosra/ magnum#38. - Fixed building issues with CMake-generated XCode project on OS X. See also mosra/
magnum#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, mosra/ magnum#35 and mosra/ magnum#43. - Fixed compilation issues with Clang and libc++
- Fixed various compilation issues under MSVC (and worked around an insane amount of compiler bugs)
Deprecated APIs
Buffer::Usageenum is deprecated to reduce header dependencies, use globalBufferUsageenum insteadMesh::Primitiveenum is deprecated to reduce header dependencies, use globalMeshPrimitiveenum insteadSampler::maxAnisotropy()is deprecated to avoid naming conflict with*Texture::setMaxAnisotropy(), useSampler::maxMaxAnisotropy()insteadMagnum::Geometry::Rectangleclass (andRectangle*typedefs) is deprecated, use more generic and feature-rich Math::Range instead. Platform::Sdl2Application::Configuration::setFlags()function and related enum is deprecated to avoid naming conflict in the future, use Platform::Sdl2Application:: Configuration:: setWindowFlags() instead SceneGraph::Animable::group()is deprecated, use non-ambiguous SceneGraph::Animable:: animables() instead Magnum/Shaders/magnumShadersResourceImport.hppheader is deprecated in favor of less verboseMagnum/Shaders/resourceImport.hppText::TextRendererclass (andText::TextRenderer2D,Text::TextRenderer3Dtypedefs) is deprecated, use less redundant name Text::Renderer instead
Potential compatibility breakages, removed APIs
- Removed
SceneGraph::*Transformation::move()from 2D transformation classes. It was originally meant for modifying draw order, but as the draw order is managed by SceneGraph::DrawableGroup class and not by parent object, this function is essentially useless.
Documentation
- Various documentation updates and fixes (see mosra/
magnum#28)
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 tosrc/Magnum,external/directory was moved tosrc/MagnumExternal(required to make inter-project includes absolute, as mentioned above)
2013.10
Released 2013-10-30, tagged as v2013.10. See the release announcement for a high-level overview.
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, mosra/ magnum#16, mosra/ magnum#21, mosra/ magnum#22, mosra/ magnum#23.
New features
- Initial Emscripten (HTML5/WebGL) port. See Platform::
Sdl2Application for detailed porting information. The examples page has now links to online Emscripten demos, see also base-emscripten branch in Magnum Bootstrap. - Mac OS X port (thanks to Miguel Martin)
- Math::
Vector:: isZero() and Math:: Vector2:: aspectRatio() convenience functions - Bitwise AND, OR, XOR, bit inversion and bit shift in integral Math::
Vector classes - Math::
MatrixMxN<T> and Math:: MatrixNxN<T> template aliases for non-square and non-transforming square matrices in Math namespace, MatrixNxN and MatrixNxNd typedefs for floatanddoublenon-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 magnum-info utility.
Context::isExtensionSupported()is now able to query extension availability on particular GLSL version- Using std::
unique_ptr and C++1y std::optionalfor resources returned from Trade::AbstractImporter for better usability and to avoid accidental memory leaks - New translation-only transformation in 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 Shaders::
Flat - Mouse button queries in Platform::
*Application:: MouseMoveEvent
Changes
Buffer::setData()andBuffer::setSubData()are now acceptingContainers::ArrayReferencefor more convenient usage- 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 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
Bug fixes
- Fixed compilation with Clang and libc++ (see mosra/
magnum#12) - Fixes compilation of the Audio library on macOS (see mosra/
magnum#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) - Extension support queries depend on selected GLSL version (see mosra/
magnum-examples#3)
Deprecated APIs
Matrix2andMatrix2dis deprecated, use Matrix2x2 and Matrix2x2d insteadswizzle()is deprecated, all of its functionality has been moved into Math::swizzle() Buffer::setData()andBuffer::setSubData()overloads taking pair of data pointer and size are deprecated, useContainers::ArrayReference-basedBuffer::setData()andBuffer::setSubData()ImageFormat.hheader,ImageFormatandImageTypeenums are deprecated, useColorFormat.hheader,ColorFormatandColorTypeenums which reflect OpenGL naming better insteadPlatform::*Application::InputEvent::Modifier::*Buttonenum values are deprecated, use Platform::*Application:: *Event:: buttons() and Platform:: *Application:: *Event:: Button enum instead AbstractShaderProgram::maxSupportedVertexAttributeCount(),AbstractTexture::maxSupportedLayerCount()andSampler::maxSupportedAnisotropy()are deprecated in favor of less verboseAbstractShaderProgram::maxVertexAttributes(),AbstractTexture::maxLayers()andSampler::maxAnisotropy()
Potential compatibility breakages, removed APIs
No deprecated API was removed in this release.
2013.08
Released 2013-08-30, tagged as v2013.08. See the project announcement for a high-level overview.