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 TransformFeedback
class, 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 DebugGroup
class.
- 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::*Context
libraries 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
glLoadGen
for 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::Target
is 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 char
instead ofconst unsigned char
for 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.cmake
to library-specific location, making it usable without providing own copy of the file in depending projects. TheWITH_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). - 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.h
header is deprecated, use one ofMagnum/PrimitiveQuery.h
,Magnum/SampleQuery.h
orMagnum/TimeQuery.h
instead. - Using
Buffer::Target
as constructor orBuffer::setTargetHint()
parameter is deprecated, useBuffer::TargetHint
instead. - The
SceneGraph::TransformationType
enum 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::ReadDraw
enum value is deprecated, use separateFramebufferTarget::Read
andFramebufferTarget::Draw
values instead. CubeMapTexture::imageSize()
with explicit face parameter is deprecated, use overload that returns one value for all faces instead.- The
Magnum/DebugMessage.h
header is deprecated, useMagnum/DebugOutput.h
instead (see mosra/magnum#89) - The
DebugMessage::Severity
enum is deprecated, useDebugOutput::Severity
instead. - The
DebugMessage::Callback
typedef,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::Source
enum are deprecated, useDebugOutput::setEnabled()
along withDebugOutput::Source
,DebugOutput::Type
andDebugOutput::Severity
instead. - Parameter-less
*Query
constructor 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::Primitive
enum, useMeshPrimitive
instead. - Removed deprecated
Sampler::maxAnisotropy()
function, useSampler::maxMaxAnisotropy()
instead. - Removed deprecated
Math::Geometry::Rectangle
class, use Math::Range instead. - Removed deprecated
SceneGraph::Animable::group()
function, use SceneGraph::Animable:: animables() instead. - Removed deprecated
Shaders/magnumShadersResourceImport.hpp
file, useShaders/resourceImport.hpp
instead. - Removed deprecated
Text::TextRenderer
alias, 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::string
just 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
compatibility
branch (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 *Texture
classes - Basic support for ARB_
texture_ multisample and ARB_ texture_ storage_ multisample in new MultisampleTexture
class - Instanced rendering, base vertex and base instance specification in
Mesh
andMeshView
classes;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
Texture
functionality into dedicatedTextureArray
,MultisampleTexture
andRectangleTexture
classes 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::Target
enum is deprecated as the API was too error-prone, use dedicatedTextureArray
,MultisampleTexture
andRectangleTexture
classes insteadFramebuffer::attachTexture*D()
is deprecated, use more genericFramebuffer::attachTexture()
andFramebuffer::attachTextureLayer()
insteadFramebufferBlit::*Buffer
enum values are deprecated, use shorterFramebufferBlit::Color
and 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 Mesh
andBuffer
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 - 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::Robustness
is deprecated, useContext::Flag::RobustAccess
which 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::ArrayReference
instead - Removed deprecated
Magnum/ImageFormat.h
header andImageFormat
/ImageType
enums, useMagnum/ColorFormat.h
header andColorFormat
/ColorType
enums instead - Removed deprecated
Matrix2
andMatrix2d
typedefs, use :ref:Matrix2x2
and :ref:Matrix2x2d
instead - Removed deprecated
Magnum/Swizzle.h
header 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::*Button
enum values, use Platform::*Application:: *Event:: buttons() function and Platform:: *Application:: *Event:: Button enum instead Platform::Sdl2Application::Configuration::Flag
enum 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
compatibility
branch - 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_FONTCONVERTER
CMake option (currently Linux only), seemagnum-fontconverter --help
for 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 convertingVersion
enum 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
#include
path
Changes
- Preferring absolute includes instead of relative (see mosra/
magnum#36) - The
magnum-distancefield
utility is now named Distance Field conversion utility for consistency with other command-line utilities ImageReference
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
Buffer::data()
and made *Image::data() templated to have them consistent. Note that this is source-compatible change. Query::result<bool>()
returnstrue
if value is nonzero (was returningtrue
only 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
MeshView
class - 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::Usage
enum is deprecated to reduce header dependencies, use globalBufferUsage
enum insteadMesh::Primitive
enum is deprecated to reduce header dependencies, use globalMeshPrimitive
enum insteadSampler::maxAnisotropy()
is deprecated to avoid naming conflict with*Texture::setMaxAnisotropy()
, useSampler::maxMaxAnisotropy()
insteadMagnum::Geometry::Rectangle
class (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.hpp
header is deprecated in favor of less verboseMagnum/Shaders/resourceImport.hpp
Text::TextRenderer
class (andText::TextRenderer2D
,Text::TextRenderer3D
typedefs) 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 float
anddouble
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 magnum-info utility.
Context::isExtensionSupported()
is now able to query extension availability on particular GLSL version- Using std::
unique_ptr and C++1y std::optional
for 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::ArrayReference
for 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
Matrix2
andMatrix2d
is 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.h
header,ImageFormat
andImageType
enums are deprecated, useColorFormat.h
header,ColorFormat
andColorType
enums which reflect OpenGL naming better insteadPlatform::*Application::InputEvent::Modifier::*Button
enum 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.